package com.cardroid.layer;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Camera;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.view.MotionEvent;
import android.view.View;

public class CameraDraw extends View {

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

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

private void initData(){
showBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.bg);
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);
}

}





public class LayerDraw extends Activity {
/** Called when the activity is first created. */
private ImageView mImageView;
private TextView tView;
private CameraDraw carmeraCameraDraw;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
carmeraCameraDraw=new CameraDraw(this);
//setContentView(R.layout.main);
setContentView(carmeraCameraDraw);
// mImageView=(ImageView)findViewById(R.id.image);
// tView=(TextView)findViewById(R.id.tv);
// setImage();
}


更多相关文章

  1. android 一个好看的翻转动画实现
  2. Android(安卓)使用View的旋转实现漂亮的动画效果
  3. Android(安卓)P系统输出图像镜像翻转实现
  4. Android中图像变换Matrix的原理、代码验证和应用
  5. Android新姿势:3D翻转效果原理
  6. Android(安卓)使用Matrix进行图像变换
  7. Android中正确自适应屏幕翻转
  8. Android中图像变换Matrix的原理、代码验证和应用
  9. Android百度地图——搜索服务之周边检索

随机推荐

  1. android 文件下载到SD卡中
  2. 学习深入理解android第一章
  3. android 7.1 禁止安装第三方软件
  4. Android之Bitmap使用心得(持续更新)
  5. Android应用程序键盘(Keyboard)消息处理机
  6. Android遍历所有文件夹和子目录搜索文件
  7. Android(安卓)卸载应用的两种方式
  8. ANDROID关于亮屏和暗屏还有解锁的监听事
  9. Android(安卓)Studio中的“无法解析符号R
  10. Android使用Material Design自带Coordina