目前,我只是有幾個按鈕的相對佈局,並且已經設置了android:background="#FFFFFF"
是否有推薦的Android背景像素大小?
我想創建改爲使用背景圖片,但是我不確定我應該建立什麼大小的圖片。
我明白,對於菜單圖標/啓動器圖標,我需要爲ldpi,mdpi和hdpi創建3套。
但是,對於背景,像素大小應該是什麼?
我將創建類似下面這樣的背景:
目前,我只是有幾個按鈕的相對佈局,並且已經設置了android:background="#FFFFFF"
是否有推薦的Android背景像素大小?
我想創建改爲使用背景圖片,但是我不確定我應該建立什麼大小的圖片。
我明白,對於菜單圖標/啓動器圖標,我需要爲ldpi,mdpi和hdpi創建3套。
但是,對於背景,像素大小應該是什麼?
我將創建類似下面這樣的背景:
不僅有不同的屏幕密度擔心,但不同的屏幕尺寸以及。爲每個配置設置背景圖像是不切實際的。相反,我會建議使用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
你應該閱讀在Android開發者指南最佳實踐Supporting Multiple Screens。
我也建議尋找到Android的9 patch drawables(雖然你的圖形可能是太複雜)
只是一個問題:因爲你的首選方法是在運行時縮放圖像,是什麼是可繪製的基本分辨率?我可以想象你有基於xhdpi的drawable,如果需要的話,你只能將其縮小到其他設備上,因爲它似乎是一個更好的主意,而不是將它們擴展出來,但我不確定。 – 2013-03-01 09:00:15