zoukankan      html  css  js  c++  java
  • 【转】 Camera模仿3D效果的小例子(图片无限旋转)

    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.util.Log;
    import android.view.MotionEvent;
    import android.view.View;
    
    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.pp);  
            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);  
            
            Log.d("TAG", "-deltaY" + -deltaY) ;
            Log.d("TAG", "deltaX" + -deltaX) ;
            Log.d("TAG", "--------------------------------------") ;
            //设置camera作用矩阵  
            camera.getMatrix(matrix);  
            camera.restore();  
            //设置翻转中心点  
            matrix.preTranslate(-this.centerX, -this.centerY);  
            matrix.postTranslate(this.centerX, this.centerY);  
              
            canvas.drawBitmap(showBmp, matrix, null);  
        }             
      
    }  

     

    3.png

    2.png

    1.png

    原文链接:http://www.devdiv.com/thread-104482-1-1.html

  • 相关阅读:
    C#中的int、long、float、double等类型都占多少个字节的内存
    Bit 存储操作代码碎片
    unity文件写入与读取
    unity调用系统剪切板功能
    LayerMask小结
    NGUI中获取鼠标在控件内部坐标
    【Unity技巧】Unity中的优化技术
    工程源码目录
    Unity3D_NGUI_性能优化实践_CPU卡顿
    Unity3d:UI面板管理整合进ToLua
  • 原文地址:https://www.cnblogs.com/popqq520/p/3246055.html
Copyright © 2011-2022 走看看