Android中怎么实现图片翻转动画效果

这篇文章将为大家详细讲解有关Android中怎么实现图片翻转动画效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供网站建设、做网站、网站策划、网页设计、国际域名空间、雅安服务器托管、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。

需要一个Rotate3d类,继承Animation

public class Rotate3d extends Animation{   private final float mFromDegrees;      private final float mToDegrees;      private final float mCenterX;      private final float mCenterY;      private final float mDepthZ;      private final boolean mReverse;      private Camera mCamera;      public Rotate3d(float fromDegrees, float toDegrees,              float centerX, float centerY, float depthZ, boolean reverse) {          mFromDegrees = fromDegrees;          mToDegrees = toDegrees;          mCenterX = centerX;          mCenterY = centerY;          mDepthZ = depthZ;          mReverse = reverse;      }      @Override      public void initialize(int width, int height, int parentWidth, int parentHeight) {          super.initialize(width, height, parentWidth, parentHeight);          mCamera = new Camera();      }      @Override      protected void applyTransformation(float interpolatedTime, Transformation t) {          final float fromDegrees = mFromDegrees;          float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);          final float centerX = mCenterX;          final float centerY = mCenterY;          final Camera camera = mCamera;          final Matrix matrix = t.getMatrix();          camera.save();          if (mReverse) {              camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);          } else {              camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));          }          camera.rotateY(degrees);          camera.getMatrix(matrix);          camera.restore();           matrix.preTranslate(-centerX, -centerY);          matrix.postTranslate(centerX, centerY);      }  }

这个类可以直接拷过去,不用做任何的修改。其中的方法自己找相关资料研究。


main.xml里加个ImageView,如

   > 

这个不需要解释吧,都可以看懂的

***,还需要一个activity类

如:

public class TestRotate extends Activity implements OnClickListener{   private mageView imageview;   private ViewGroup mContainer;   /**    *这个变量设置的是图片,如果是多张图片,那么可以用数组,如    *private static final int IMAGE = new int[]{    * R.drawable.ro,    * R.drawable.icon    *};    *有多少图片就放多少,我这里做的只是一张图片的翻转    *    */   private static final int IMAGE = R.drawable.ro;      /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);                  imageview = (ImageView) findViewById(R.id.image);          mContainer = (ViewGroup) findViewById(R.id.container);                  /**           * 设置***显示的图片           * 如果是数组,那么可以写成IMAGE[int]           *            */          imageview.setImageResource(IMAGE);                  /**           *            * 设置ImageView的OnClickListener           *            */                  imageview.setClickable(true);          imageview.setFocusable(true);          imageview.setOnClickListener(this);      }      private void applyRotation(int position, float start, float end) {          // Find the center of the container          final float centerX = mContainer.getWidth() / 2.0f;          final float centerY = mContainer.getHeight() / 2.0f;          final Rotate3d rotation =                  new Rotate3d(start, end, centerX, centerY, 310.0f, true);          rotation.setDuration(500);          rotation.setFillAfter(true);          rotation.setInterpolator(new AccelerateInterpolator());          rotation.setAnimationListener(new DisplayNextView(position));          mContainer.startAnimation(rotation);      }       @Override   public void onClick(View v) {    // TODO Auto-generated method stub    /**     *      * 调用这个方法,就是翻转图片     * 参数很简单,大家都应该看得懂     * 简单说下,***个是位置,第二是开始的角度,第三个是结束的角度     * 这里需要说明的是,如果是要回到上一张     * 把***个参数设置成-1就行了     *      */    applyRotation(0,0,90);   }   private final class DisplayNextView implements Animation.AnimationListener {          private final int mPosition;          private DisplayNextView(int position) {              mPosition = position;          }          public void onAnimationStart(Animation animation) {          }          public void onAnimationEnd(Animation animation) {              mContainer.post(new SwapViews(mPosition));          }          public void onAnimationRepeat(Animation animation) {          }      }      /**       * This class is responsible for swapping the views and start the second       * half of the animation.       */      private final class SwapViews implements Runnable {          private final int mPosition;          public SwapViews(int position) {              mPosition = position;          }          public void run() {              final float centerX = mContainer.getWidth() / 2.0f;              final float centerY = mContainer.getHeight() / 2.0f;              Rotate3d rotation;                         if (mPosition > -1) {               imageview.setVisibility(View.VISIBLE);               imageview.requestFocus();                  rotation = new Rotate3d(90, 180, centerX, centerY, 310.0f, false);              } else {               imageview.setVisibility(View.GONE);                  rotation = new Rotate3d(90, 0, centerX, centerY, 310.0f, false);              }              rotation.setDuration(500);              rotation.setFillAfter(true);              rotation.setInterpolator(new DecelerateInterpolator());              mContainer.startAnimation(rotation);          }      }  }

关于Android中怎么实现图片翻转动画效果就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


当前标题:Android中怎么实现图片翻转动画效果
文章地址:http://ybzwz.com/article/igiepe.html