我有一个Bitmap
,我试图将它用作我窗口的平铺背景。问题是规模是错误的。我想让位图在屏幕上绘制两倍大。我尝试同时使用Bitmap.setDensity
和BitmapDrawable.setTargetDensity
,但都没有效果。
我的代码:
Bitmap bitmap = fromSomewhere();
int original_density = bitmap.getDensity(); // this returns 240
// bitmap.setDensity(..); // has no effect, tried with 120,160,480
BitmapDrawable drawable = new BitmapDrawable(bitmap);
// drawable.setTargetDensity(..); // has no effect, tried with 120,160,480
drawable.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);
getWindow().setBackgroundDrawable(drawable);
注意:
<supports-screens android:anyDensity="true"/>
Bitmap
对象,我无法控制它是如何生成的,我只能对它进行操作。密度不是实现x2缩放的最简单方法吗?为什么没有工作?\
答案 0 :(得分:0)
不确定这是Android错误还是设计错误。对此挣扎然后最终得到以下解决方法。我们的想法是你然后应用矩阵变换来计算像素密度。
view
是您的ImageView
view.setScaleType(ImageView.ScaleType.MATRIX);
Matrix matrix = new Matrix();
float scaleFactor = view.getContext().getResources().getDisplayMetrics().density;
matrix.setScale(scaleFactor,scaleFactor);
view.setImageMatrix(matrix);
BitmapDrawable bitmapDrawable = new BitmapDrawable(view.getContext().getResources(), bitmap);
bitmapDrawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
view.setImageDrawable(bitmapDrawable);