http://www.linuxidc.com/Linux/2011-12/50204.htm
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();
-
- camera.rotateX(-deltaY);
-
- camera.rotateY(deltaX);
-
- camera.getMatrix(matrix);
- camera.restore();
-
- matrix.preTranslate(-this.centerX, -this.centerY);
- matrix.postTranslate(this.centerX, this.centerY);
-
- canvas.drawBitmap(showBmp, matrix, null);
- }
-
- }
|
效果如图: