2012-08-06 109 views
2

我從資源文件夾中加載圖像,但是我遇到了一個問題。android,從資產中讀取jpg圖像

從資源和資源加載的相同圖像不是相同的尺寸 - 分辨率。

對於從資產中獲得了像我用這個方法:

AssetManager am=this.getAssets(); 
      try { 
       Bitmap bmp = BitmapFactory.decodeStream(am.open("imgs/a.jpg")); 
       imageViewDraw.setImageBitmap(bmp); 
      } catch (IOException e) { 

       e.printStackTrace(); 
      } 

輸出從R.drawable和資產裝入同一圖像上的圖像

有人能告訴我爲什麼和哪能從資產讀取圖像,但解決方法應該與從R.drawable一樣。

output images

感謝

+0

你確定Android不會縮放圖片嗎? – Christine 2012-08-06 20:41:12

回答

0

如果您加載的位圖的ImageView的使用scaleType和adjustViewbounds參數。因此,例如在XML:

     <ImageView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:adjustViewBounds="true" 
         android:scaleType="centerInside" /> 

的事情是,當你從資產目錄加載圖像系統並不適用任何縮放或使用繪製文件夾時,機器人會嘗試任何processiong你的位圖,而不是根據設備的分辨率縮放圖像。

因此,獲得完全相同結果的唯一真正方法是對imageview使用固定大小,理想情況下應該用dps指定它,理想情況下應該將該值放在dimens.xml文件中,以便可以更改該值值的各種系統配置

0

您需要使用setDrawable而不是縮放可繪製。 (新的BitmapDrawable(getContext()。getResources(),位圖));}};

這也是爲什麼沒有得到getResources()參數的其他方法已被棄用的原因,在這種情況下它將處理縮放。