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

时间:2023-03-12 02:33:35 

下面给大家分享一个有趣的动画:这里比较适合一张图片的翻转,如果是多张图片,可以参考APIDemo里的例子,就是加个ArrayAdapter,还是简单的,也可以自己发挥修改,实现自己想要的。这里的代码基本上可以直接运行项目了。
在main.xml里加个ImageView,如


<?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类
如:


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,图片翻转动画
0
投稿

猜你喜欢

  • Spring Cloud Gateway入门解读

    2023-03-14 12:01:00
  • C#6.0新语法示例详解

    2023-11-16 03:43:42
  • Java 设计模式以虹猫蓝兔的故事讲解简单工厂模式

    2021-10-19 21:20:08
  • Java实现世界上最快的排序算法Timsort的示例代码

    2021-12-14 17:57:27
  • C# Ini文件操作实例

    2022-12-31 00:37:45
  • SparkSQl简介及运行原理

    2023-09-17 05:18:19
  • Java中EasyPoi多sheet导出功能实现

    2023-01-15 08:10:39
  • 简单实现Android本地音乐播放器

    2021-09-04 19:28:28
  • Java线程组与未处理异常实例分析

    2021-12-01 12:21:08
  • Spring实现处理跨域请求代码详解

    2023-11-25 12:28:34
  • C# wpf Grid中实现控件拖动调整大小的示例代码

    2023-05-15 17:12:03
  • Java8简单了解Lambda表达式与函数式接口

    2022-11-07 00:22:31
  • Java集合ArrayList与LinkedList详解

    2022-11-11 12:14:31
  • 学习Java设计模式之观察者模式

    2023-07-03 05:17:46
  • 一篇文章带你深入了解Java封装

    2023-11-20 00:37:45
  • 软件开发基础之设计模式概述

    2023-05-14 04:53:07
  • Android仿天猫横向滑动指示器功能的实现

    2022-10-09 16:53:58
  • springboot调用支付宝第三方接口(沙箱环境)

    2023-11-25 06:12:08
  • Java访问Hadoop分布式文件系统HDFS的配置说明

    2021-11-20 05:53:42
  • Unity3D实现批量下载图片功能

    2021-07-03 13:00:14
  • asp之家 软件编程 m.aspxhome.com