[英]Scale bitmap on surfaceview for smaller high density screens
我有一個300多個位圖的列表,用戶可以將它們放置在Surfaceview屏幕上。 對於這些圖像,我都有密度XHDPI,HDPI,MDPI和LDPI的資源。 問題是,當用戶的屏幕較小且密度較高時,他們正在使用占用大量屏幕的較大資源(XHDPI)。
圖像在7英寸平板電腦屏幕(Galaxy Tab 2 7.0)上顯示完美,但在屏幕為4英寸的設備上,圖像太大。
如何根據用戶屏幕尺寸縮放位圖,以便每個用戶都可以擁有相同的體驗?
我相信我已經弄清楚了,實際上很簡單。 基本上,我將原始位圖的width()和height()轉換為dp,然后使用新的dp值height和width縮放位圖。 結果是在所有屏幕上大小均相同的位圖。 我仍在測試,但到目前為止,它已在我加載的每個仿真器上運行。
public BitmapDrawable getScaledBitmapDrawable(int indexID) {
Bitmap bitmapOrg = BitmapFactory.decodeResource(mResources,
myNewImageList.get(indexID));
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
int nwidth = (int) convertPixelsToDp(width,c);
int nheight = (int) convertPixelsToDp(height,c);
Bitmap bitmapResized = Bitmap.createScaledBitmap(bitmapOrg, nwidth,
nheight, false);
return BitmapDrawable bitmapDrawable = new BitmapDrawable(mResources,
bitmapResized);
}
//conversion method
public static float convertPixelsToDp(float px, Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px / (metrics.densityDpi / 160f);
return dp;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.