2011-04-15 57 views
1

目前,我只是有幾個按鈕的相對佈局,並且已經設置了android:background="#FFFFFF"是否有推薦的Android背景像素大小?

我想創建改爲使用背景圖片,但是我不確定我應該建立什麼大小的圖片。

我明白,對於菜單圖標/啓動器圖標,我需要爲ldpi,mdpi和hdpi創建3套。

但是,對於背景,像素大小應該是什麼?

我將創建類似下面這樣的背景:

enter image description here

回答

2

不僅有不同的屏幕密度擔心,但不同的屏幕尺寸以及。爲每個配置設置背景圖像是不切實際的。相反,我會建議使用java代碼來拍攝圖像並將其縮放到屏幕大小,無論屏幕大小或分辨率如何。

在這個例子中,我從一個遊戲中拉出來,我有一個位圖bg,屏幕分辨率保存爲maxwidth和maxheight。我將位圖與背景進行比較,然後設置一些比例值。 oldx/oldy確定自上次檢查以來屏幕分辨率是否發生了變化。我創建一個矩陣並調整位圖大小,將其保存爲bgresized,然後設置我的oldx/oldy,以便在需要時我的下一個更新可以重新調整。然後,我畫出新的背景

這段代碼我用了一個畫布,你可以在你的視圖的onDraw(Canvas canvas)方法中使用,或者你不喜歡畫布,你可以改變它在onCreate中使用它,方向變化,或類似的東西

checkbackgroundsize(); 
bgwidth = bg.getWidth(); 
    bgheight = bg.getHeight(); 
    scalex = (float)maxwidth/(float)bgwidth; 
    scaley = (float)maxheight/(float)bgheight; 
    if ((oldx != scalex) || (oldy != scaley)){//if the screen changed sizes 
     Matrix matrix = new Matrix(); 
     matrix.postScale(scalex, scaley); 
     bgresized = Bitmap.createBitmap(bg, 0, 0, bgwidth, bgheight, matrix, true); 
     oldx = scalex; 
     oldy = scaley; 
    } 

    canvas.drawBitmap(bgresized, 0, 0, null);//draw resized background 
+0

只是一個問題:因爲你的首選方法是在運行時縮放圖像,是什麼是可繪製的基本分辨率?我可以想象你有基於xhdpi的drawable,如果需要的話,你只能將其縮小到其他設備上,因爲它似乎是一個更好的主意,而不是將它們擴展出來,但我不確定。 – 2013-03-01 09:00:15

0

我也建議尋找到Android的9 patch drawables(雖然你的圖形可能是太複雜)