我正在使用我想要水平翻转的背景可绘制对象(它代表视图的“背面”)。我想在不复制原始位图的情况下执行此操作(内存问题),并且我不能只销毁原始位图,因为我稍后会需要它(当视图被翻转回来时)。
我尝试通过BitmapDrawable
在方法中扩展和做一些矩阵变换来做到这一点draw(Canvas)
,但是当硬件加速时这不起作用。
这是我现在正在做的事情,作为我Fragment
的一部分onCreateView()
:
BitmapDrawable backgroundDrawable = foo;
Matrix matrix = new Matrix();
matrix.preScale(-1, 1);
Bitmap flipped = Bitmap.createBitmap(
backgroundDrawable.getBitmap(), 0, 0, backgroundDrawable
.getBitmap().getWidth(), backgroundDrawable
.getBitmap().getHeight(), matrix, false);
v.findViewById(R.id.bar).setBackgroundDrawable(
new BitmapDrawable(getResources(), flipped));
它工作得很好,只是我现在Bitmap
在内存中有一个副本。有什么办法吗?