Bitmap.createBitmap(int width,int height,Bitmap.Config config)方法只是说给它一个高度和一个宽度。没有迹象表明这些是实际像素还是dp像素。
我的问题:
1。)这些值是dp像素吗? 2.)如果没有,有没有办法使用dp像素作为高度和宽度的参数?
谢谢。
答案 0 :(得分:14)
它使用像素(常规,而不是dp像素)。使用以下方法将dp中的参数转换为常规像素:
public static float dipToPixels(Context context, float dipValue) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics);
}
答案 1 :(得分:7)
您可以使用XML文件中定义的宽度和高度创建Bitmap
。
这就是我所做的:
在XML文件中:
<强> drawing_dimensions.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="bitmapWidth">160dp</dimen>
<dimen name="bitmapHeight">128dp</dimen>
</resources>
这可以更改为您更喜欢使用的单位
然后,您只需在活动中创建对此的引用:
<强> DrawingActivity.java 强>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//onCreate.....
// referencing to the dimension resource XML just created
int bitmapWidth = getResources().getDimension(R.dimen.bitmapWidth);
int bitmapHeight = getResources().getDimension(R.dimen.bitmapHeight);
Bitmap myBitmap = Bitmap.createScaledBitmap(
getResources().getDrawable(R.drawable.my_image), bitmapWidth,
bitmapHeight, true);
我希望这有帮助,快乐编码!
答案 2 :(得分:3)
值以像素为单位(常规,而不是dp)。值得一提的是,在所有接受像素尺寸的功能中,尺寸通常是常规像素尺寸。这适用于视图宽度和高度,位置,可绘制尺寸等。
如果您希望提供dp,那么从dp到像素的转换功能很多。这是一个非常直接的公式。
如果您希望在位图解码过程中解码位图并更改密度,请查看BitmapFactory.decodeXYZ
并仔细查看密度相关字段中的BitmapFactory.Options
。如果您希望相同的源位图(例如,从Web下载的位图)在不同的密度设备上具有不同的像素大小,这可能很有用。