作者hellogg1 (小吉~掰:D)
看板AndroidDev
标题Re: [问题] 关於BitmapFactory.Options的设定
时间Tue Mar 19 21:06:27 2013
※ 引述《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
1F:推 diejudas:推荐这个小吉 03/19 21:36
2F:推 kaito12:原来是这个意思!了解了~感谢!!! 03/20 11:19