那么,缩放效果实际上应用在画布级别。所以,你可以做的是获得当前的Canvas增强,然后用你的位图绘制一个新的改变,但是,你将不得不重写ImageView类来展示支持Canvas的Matrix。
public class ExposedImageView extends ImageView {
protected Matrix matrix = new Matrix();
... // constructors
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.getMatrix(matrix);
}
public Matrix getCanvasMatrix(){
return matrix;
}
}
然后你就可以用类似得到调整的映像:
public static Bitmap getRealImage(ExposedImageView view) throws Throwable { // OutOfMemoryError, etc.
Bitmap original = ((BitmapDrawable) context.getDrawable())
.getBitmap();
Bitmap adjusted = Bitmap.createBitmap(original.getWidth(),
original.getHeight(),
original.getConfig());
Canvas canvas = new Canvas(adjusted);
canvas.setMatrix(view.getCanvasMatrix());
canvas.drawBitmap(original, 0, 0, null);
return adjusted;
}
感谢您的回答,但'canvas.getMatrix(矩阵);'已过时,我尝试使用'getMatrix( )'ExposedImageView',但它不起作用!,有什么建议吗? – Abanoub
经过深入挖掘,我想知道View.getMatrix()与您的请求不符的原因可能与https://code.google.com/p/android/issues/detail有关吗? ID = 24517 – Guardanis