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