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

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);
	}			

}

效果如图:


  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值