2014-02-09 33 views
1

我有一個超過300個位圖的列表,用戶可以將其放置在曲面視圖屏幕上。對於這些圖像中的每一個,我都有密度爲XHDPI,HDPI,MDPI和LDPI的資源。問題在於,當用戶使用屏幕較小的高密度屏幕時,他們正在使用佔用大部分屏幕的較大資源(XHDPI)。在較小的高密度屏幕上使用SurfaceView縮放位圖

圖像在7英寸平板電腦屏幕(Galaxy Tab 2 7.0)上顯示完美,但帶有4英寸屏幕的設備並且圖像太大。

如何根據用戶屏幕尺寸縮放位圖,以便每個用戶都可以擁有相同的體驗?

回答

1

我相信我已經想通了,它其實很簡單。基本上我採用原始位圖的width()和height(),並將它們轉換爲dp,然後使用新的dp值爲高度和寬度縮放位圖。結果是所有屏幕上的大小相同的位圖。我仍在測試這個,但到目前爲止它已經在我裝載的每個模擬器上工作過了。

 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; 
     } 
相關問題