簡體   English   中英

較小的高密度屏幕在Surfaceview上縮放位圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM