图片的3D翻转借助的是android.graphics.Camera类来实现的。理论上来说应该也可以通过矩阵变换来实现,希望有高手能够指出。下面附上代码:
import android.graphics.Camera;
private Camera camera;
camera = new Camera();
/**
* 翻转图片
*
* @param isLeftOrRight
*/
private void roatePicture(boolean isLeftOrRight, Bitmap bitmap) {
camera.save();
Matrix matrix = new Matrix();
// rotate
if (isLeftOrRight) {
camera.rotateY(180);
} else {
camera.rotateX(180);
}
camera.getMatrix(matrix);
// 恢复到之前的初始状态。
camera.restore();
// 设置图像处理的中心点
matrix.preTranslate(bitmap.getWidth() >> 1, bitmap.getHeight() >> 1);
// matrix.preSkew(10, 10);
matrix.postTranslate(bitmap.getWidth(), bitmap.getHeight());
// matrix.postSkew(skewX, skewY);
// 直接setSkew(),则前面处理的rotate()、translate()等等都将无效。
// matrix.setSkew(skewX, skewY);
// 2.通过矩阵生成新图像(或直接作用于Canvas)
Bitmap newBit = null;
try {
// 经过矩阵转换后的图像宽高有可能不大于0,此时会抛出IllegalArgumentException
newBit = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
}
if (newBit != null) {
// show_image.mImageView.setLayout(false);
show_image.setImageBitmap(newBit);
tempBitmap = newBit;
}
}