2016-04-09 20 views
0

因爲當我從json解析image-url並將其設置爲ImageView時,它在像Lenevo k3 Note這樣的較大設備上尺寸較小。位圖是一個好主意,或者是否有任何其他方法來設置從json解析的圖像。我已經將ImageView設置爲將內容作爲高度和寬度進行包裝以相應地進行調整。相同的位圖對象在較小的設備上較大但不準確,爲什麼會出現這種情況,我做了很多R & D但無法修復它。請提供一個更好的解決方案。一個定義良好的解決方案將提前得到驗證。Bitmap在具有imageview的大型設備中正在降頻

//code to set the imageview with bitmap 

        String imageUrl=saving.getBankLogo() 
         Bitmap bitmap=getBitmapFromURL(imageUrl); 

        //resized Bitmap 
          Bitmap resizedBitmap=bitmap.createScaledBitmap(bitmap,bitmap.getWidth(),bitmap.getHeight(),false); 
          imgIcon.setImageBitmap(resizedBitmap); 

       //code to get Bitmap from url 
        public Bitmap getBitmapFromURL(String imageUrl) { 
          Bitmap myBitmap; 
          Bitmap newBitMap; 
          try { 

           StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
           StrictMode.setThreadPolicy(policy); 
           URL url = new URL(imageUrl); 
           HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
           connection.setDoInput(true); 
           connection.connect(); 
           InputStream input = connection.getInputStream(); 

           BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
           bitmapOptions.inSampleSize = 1; 
           bitmapOptions.inScaled=true; 

          /* DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); 
           int width = displayMetrics.widthPixels; 
           int height = displayMetrics.heightPixels; 
        */ 



           myBitmap = BitmapFactory.decodeStream(input, null, bitmapOptions); 
           /*myBitmap = Bitmap.createScaledBitmap(myBitmap, myBitmap.getHeight(), 
             myBitmap.getWidth(), true);*/ 

           /* newBitMap = scaleToActualAspectRatio(myBitmap); 

           newBitMap=decodeFile(input);*/ 
           input.close(); 



          } catch (IOException e) { 
           e.printStackTrace(); 
           return null; 
          } 
          return myBitmap; 
         } 

回答

0

將ImageView設置爲WRAP_CONTENT將使ImageView根據其中使用的圖像或位圖更改其大小。由於屏幕密度不同,這會在比較不同設備上的圖像時導致錯誤。小尺寸設備通常具有mdpi密度級別,使得位圖看起來更大,因爲大屏幕的密度級別爲hdpi或更高,使得Bitmap看起來更小。

爲了讓您的用戶界面在各個設備上看起來均勻一致,請爲ImageView設置特定的寬度和高度(確保在dp中設置尺寸)。然後,如果想要保持寬高比或將其設置爲背景(如果要覆蓋整個ImageView),請將該位圖設置爲源(xml代碼中的src屬性)。

有關詳情,請訪問以下鏈接:

http://developer.android.com/training/multiscreen/screendensities.html

http://developer.android.com/guide/practices/screens_support.html

相關問題