首页 > 代码库 > android 细节之 旋转动画
android 细节之 旋转动画
Flip Animation for Android:
最近项目中用到了一个小动画,让物体实现一定的3D旋转效果,现记录如下:
public class FlipAnimation extends Animation { private Camera mCamera; private View mFromView; private View mToView; private float mCenterX; private float mCenterY; private boolean mForward = true; /** * Creates a 3D flip animation between two views. * * @param fromView First view in the transition. * @param toView Second view in the transition. */ public FlipAnimation(View fromView, View toView) { mFromView = fromView; mToView = toView; setDuration(700); setFillAfter(false); setInterpolator(new AccelerateDecelerateInterpolator()); } public void reverse() { mForward = false; View switchView = mToView; mToView = mFromView; mFromView = switchView; } @Override public void initialize(int width, int height, int parentWidth, int parentHeight) { super.initialize(width, height, parentWidth, parentHeight); mCenterX = width / 2; mCenterY = height / 2; mCamera = new Camera(); } @Override protected void applyTransformation(float interpolatedTime, Transformation t) { final double radians = Math.PI * interpolatedTime; float degrees = (float)(180.0 * radians / Math.PI); if (interpolatedTime >= 0.5f) { degrees -= 180.f; mFromView.setVisibility(View.GONE); mToView.setVisibility(View.VISIBLE); } if (mForward) { degrees = -degrees; } final Matrix matrix = t.getMatrix(); mCamera.save(); mCamera.rotateY(degrees); mCamera.getMatrix(matrix); mCamera.restore(); matrix.preTranslate(-mCenterX, -mCenterY); matrix.postTranslate(mCenterX, mCenterY); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。