2013年9月17日

Android ─ 透過Bitmap縮小圖片

在修改Android Setting時,有時候想要修改顯示的圖片大小,但是又不想要更動原本Setting裡的layout配置。
我所採用的方式是,透過Bitamp來達到縮放icon的大小

步驟
1.先將icon圖檔讀入到bitmap
2.設定要縮放的比例
   比例算法:用新圖檔的長高/原始圖檔的長高
3.建立一個新的Martix,利用postScale設定Martix的比例
   參考網址
4.接著建立新的bitmap,透過createBitmap將原圖及Maritx等參數加入,即可建立新的被resize的      bitmap
   參考網址
5.將resize的bitmap加入到BitmapDrawable
6.最後將BitmapDrawable ,透過setImageDrawable加入到imageview去顯示

依照上去步驟,可以減少調整原先setting layout的設置,達到縮放icon的效果

程式碼如下

ImageView indicatorView = new ImageView(getContext());
   
//for resize icon
Bitmap bmp = BitmapFactory.decodeResource(getContext().getResources(), 
R.drawable.ic_tab_common_setting);
int oldwidth = bmp.getWidth();
int oldheight = bmp.getHeight();
Log.i("Alex","SettingManager====>bmp size is :"+oldwidth+","+oldheight);
float scaleWidth = 51 / (float)oldwidth;
float scaleHeight = 51 / (float)oldheight;
Log.i("Alex","SettingManager====> set scale value : "+scaleWidth + ":" + scaleHeight);
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// create the new Bitmap object
Bitmap resizedBitmap = Bitmap.createBitmap(bmp, 0, 0, oldwidth,oldheight, matrix, true);
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
indicatorView.setBackgroundResource(R.drawable.bg_tab_title);
indicatorView.setImageDrawable(bmd);



其他參考網頁1
其他參考網頁2

沒有留言:

張貼留言