Re: [問題] 關於BitmapFactory.Options的設定
※ 引述《kaito12 (哈士奇)》之銘言:
: 因為現在高解析的關係,有些UI變得太小不好按 (ex:地圖上的錨點)
: 同樣4吋的螢幕上,解析度兩倍,按鈕就變成一半大小
: 請問如果在製造Bitmap的時候,希望圖片大小依照螢幕大小作調整
: 而不希望用固定的pixel,應該怎麼設定BitmapFactory.Options呢?
: 我原本寫法如下
: ----------------------------------------------------------------
: BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
: bitmapOptions.inSampleSize = 1;
: bitmapOptions.inScaled = false;
: Bitmap marker = BitmapFactory.decodeResource(getResources(),
: R.drawable.pointMarker, bitmapOptions);
: ----------------------------------------------------------------
: 我的目的是希望圖片(pointMarker)不管螢幕解析度都可以保持一樣大小
: 請問我BitmapFactory.Options是不是有什麼屬性也要一併設置呢?
: 原本我想到的解法是bitmap好像是pixel為單位,就偵測裝置的螢幕大小和解析度
: 一定的比例區間就用createScaledBitmap重新resize成對應大小的圖檔
: 不過這樣好像太冗了,應該有更好的解法 orz
你可以考慮先取得裝置的desity
int desity = getResources().getDisplayMetrics().desityDpi;
它會是以下值:
public static final int DENSITY_HIGH : 240
public static final int DENSITY_LOW : 120
public static final int DENSITY_MEDIUM : 160
public static final int DENSITY_XHIGH : 320
public static final int DENSITY_XXHIGH : 480
假設你的圖是預設desity為200時所呈現,
BitmapFactory.Options options = new BitmapFactory.Options();
options.isScaled = true;
options.inDensity = 200;
options.inTargetDensity = 480(該裝置density,假設是XXHIGH)
Bitmap bitmap = BitmapFactory.decodeResource(R.drawable.xxx, options);
這樣就可以顯示正確的圖嚕~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.252.131.122
推
03/19 21:36, , 1F
03/19 21:36, 1F
推
03/20 11:19, , 2F
03/20 11:19, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):