Camera模仿3D效果的小例子(图片无限旋转)

  1. import android.content.Context;
  2. import android.graphics.Bitmap;
  3. import android.graphics.BitmapFactory;
  4. import android.graphics.Camera;
  5. import android.graphics.Canvas;
  6. import android.graphics.Matrix;
  7. import android.util.Log;
  8. import android.view.MotionEvent;
  9. import android.view.View;

  10. public class FlipImgEffectView extends View {  
  11.     
  12.     private Context context ;  
  13.     private Bitmap showBmp ;  
  14.     private Matrix matrix ; //作用矩阵  
  15.     private Camera camera ;   
  16.     private int deltaX , deltaY ; //翻转角度差值  
  17.     private int centerX , centerY ; //图片中心点  
  18.       
  19.     public FlipImgEffectView(Context context) {  
  20.         super(context);  
  21.         this.context = context ;  
  22.         initData();  
  23.     }  
  24.       
  25.     private void initData(){  
  26.         showBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.pp);  
  27.         centerX = showBmp.getWidth()/2 ;  
  28.         centerY = showBmp.getHeight()/2 ;  
  29.         matrix = new Matrix();  
  30.         camera = new Camera();  
  31.     }    
  32.   
  33.     int lastMouseX ;  
  34.     int lastMouseY ;  
  35.     @Override  
  36.     public boolean dispatchTouchEvent(MotionEvent event) {  
  37.         int x = (int) event.getX();      
  38.         int y = (int) event.getY();      
  39.         switch(event.getAction()) {      
  40.          case MotionEvent.ACTION_DOWN:   
  41.              lastMouseX = x ;  
  42.              lastMouseY = y ;  
  43.              break;      
  44.          case MotionEvent.ACTION_MOVE:  
  45.              int dx = x - lastMouseX ;  
  46.              int dy = y - lastMouseY ;  
  47.              deltaX += dx ;  
  48.              deltaY += dy ;  
  49.              break;      
  50.          }     
  51.          
  52.         invalidate();  
  53.         return true;  
  54.     }  
  55.   
  56.     @Override  
  57.     protected void onDraw(Canvas canvas) {  
  58.           
  59.         camera.save();  
  60.         //绕X轴翻转  
  61.         camera.rotateX(-deltaY);  
  62.         //绕Y轴翻转  
  63.         camera.rotateY(deltaX);  
  64.         
  65.         Log.d("TAG", "-deltaY" + -deltaY) ;
  66.         Log.d("TAG", "deltaX" + -deltaX) ;
  67.         Log.d("TAG", "--------------------------------------") ;
  68.         //设置camera作用矩阵  
  69.         camera.getMatrix(matrix);  
  70.         camera.restore();  
  71.         //设置翻转中心点  
  72.         matrix.preTranslate(-this.centerX, -this.centerY);  
  73.         matrix.postTranslate(this.centerX, this.centerY);  
  74.           
  75.         canvas.drawBitmap(showBmp, matrix, null);  
  76.     }             
  77.   
  78. }  
复制代码


 

 

你可能感兴趣的:(Camera模仿3D效果的小例子(图片无限旋转))