您的位置:首页 > 移动开发 > Android开发

android matrix camera处理图片绕X轴Y轴翻转(类似3D效果)

2011-08-26 14:20 453 查看
android中实现图片绕X轴、Y轴、Z轴翻转可以使用matrix和camera,类似3D效果

具体参见代码:

public class FlipImgEffectView extends View {

private Context context ;
private Bitmap showBmp ;
private Matrix matrix ; //作用矩阵
private Camera camera ;
private int deltaX , deltaY ; //翻转角度差值
private int centerX , centerY ; //图片中心点

public FlipImgEffectView(Context context) {
super(context);
this.context = context ;
initData();
}

private void initData(){
showBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.flower);
centerX = showBmp.getWidth()/2 ;
centerY = showBmp.getHeight()/2 ;
matrix = new Matrix();
camera = new Camera();
}

int lastMouseX ;
int lastMouseY ;
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastMouseX = x ;
lastMouseY = y ;
break;
case MotionEvent.ACTION_MOVE:
int dx = x - lastMouseX ;
int dy = y - lastMouseY ;
deltaX += dx ;
deltaY += dy ;
break;
}

invalidate();
return true;
}

@Override
protected void onDraw(Canvas canvas) {

camera.save();
//绕X轴翻转
camera.rotateX(-deltaY);
//绕Y轴翻转
camera.rotateY(deltaX);
//设置camera作用矩阵
camera.getMatrix(matrix);
camera.restore();
//设置翻转中心点
matrix.preTranslate(-this.centerX, -this.centerY);
matrix.postTranslate(this.centerX, this.centerY);

canvas.drawBitmap(showBmp, matrix, null);
}

}

效果如图:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matrix android class null