從res中顯示的圖片,系統會把它的密度默認為機器的密度,而從sd卡中讀出的圖片則默認為160dpi。因此在屏幕上顯示的大小可能會不一樣。解決辦法:
1.根據手機的屏幕密度更改圖片的大小。如手機屏幕密度為240dpi(hdpi),則可將圖片的大小改變為240/160*原圖大小,此時放在sd卡中再取出顯示就和原來的圖片放在res中取出顯示一樣。
2.應用中從sd卡中獲取的圖片,一般都是從網絡上下載下來的,因此,獲取資源時可將圖片的寬、高一并獲得,然后在程序中設置ImageView的寬高。
3.網上看到的,還沒試,先保存下來。
1、得到資源目錄下的drawable
BitmapDrawable drawable = (BitmapDrawable) getResources().getDrawable(R.drawable.test);
2、得到這個drawable的寬高
int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();
3、得到sdcard下目錄的bitmap
Bitmap bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(testUrl), w, h, true);
// Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter) 這個方法就是核心方法 設置createScaledBitmap filter 為true 即可變位圖
4、將bitmap轉換成drawable
BitmapDrawable drawable =new BitmapDrawable(getResources() , bitmap);
5、將drawable的密度設置為本機密度 即:
drawable.setTargetDensity(getResources().getDisplayMetrics());
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。