1

我正在使用我想要水平翻转的背景可绘制对象(它代表视图的“背面”)。我想在不复制原始位图的情况下执行此操作(内存问题),并且我不能只销毁原始位图,因为我稍后会需要它(当视图被翻转回来时)。

我尝试通过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在内存中有一个副本。有什么办法吗?

4

0 回答 0