我使用函数loadBitmap来获取带有canvas的位图,但是里面位图的位置是错误的,我已经想了很久,但是找不到原因。 points由layout_marignLeft和layout.xml中的layout_marinTop在dp中设置。 这是代码。
public Bitmap loadBitmap() {
Bitmap b = BitmapFactory.decodeResource(mContext.getResources(),bg)
.copy(Bitmap.Config.ARGB_8888, true);
if (null == ids ||null == points || ids.size() != points.size())
return b;
Canvas c = new Canvas(b);
for (int i = 0; i < ids.size(); i++) {
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), ids.get(i));
c.drawBitmap(bitmap, dpToPx(points.get(i).x), dpToPx(points.get(i).y), null);
bitmap.recycle();
}
c.save(Canvas.ALL_SAVE_FLAG);
c.restore();
return b;
}
public float dpToPx(float x) {
return mContext.getResources().getDisplayMetrics().density * x;
}
答案 0 :(得分:0)
是您正在使用填充的图像。如果图像有一些额外的alpha边界,那么你的计算可能会出错。
答案 1 :(得分:0)
问题与View和Canvas无关,我希望应用程序全屏,但平板电脑有导航栏,导致布局没有填满屏幕,margin_left和margin_right的参数完全错误。当我隐藏了导航栏,一切正常。这是隐藏导航栏的方法。Android tablet navigation bar won't hide