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

  • 相关阅读:
    关于ArcGIS Server VS2010无法显示发布的地图服务
    NDK,动态链接库,JNI
    android开发中一些报错的解决方法
    查询死锁对象
    pb导入excel文件
    n_cst_ping在powerbuilder 11 中的变化,一面的程序可正常ping
    SQL拼音
    数据库优化
    android调用asp.net webservice,返回json结构
    iframe内部需要弹出浮层问题
  • 原文地址:https://www.cnblogs.com/popqq520/p/3246055.html
Copyright © 2011-2022 走看看