源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android图片翻转动画简易实现代码

  • 时间:2020-07-22 03:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android图片翻转动画简易实现代码
下面给大家分享一个有趣的动画:这里比较适合一张图片的翻转,如果是多张图片,可以参考APIDemo里的例子,就是加个ArrayAdapter,还是简单的,也可以自己发挥修改,实现自己想要的。这里的代码基本上可以直接运行项目了。 在main.xml里加个ImageView,如
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Rotate" android:textSize="50px" android:layout_x="150px" android:layout_y="30px" android:src="@drawable/ro"> ></ImageView> </FrameLayout>
这个不需要解释吧,都可以看懂的 最后,还需要一个activity类 如:
[u]复制代码[/u] 代码如下:
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); } } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部