Re: [問題] 關於BitmapFactory.Options的設定

看板AndroidDev作者 (小吉~掰:D)時間11年前 (2013/03/19 21:06), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1HI6BM21 (AndroidDev)
文章代碼(AID): #1HI6BM21 (AndroidDev)