下面给大家分享一个有趣的动画:这里比较适合一张图片的翻转,如果是多张图片,可以参考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,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,false);
} else {
imagevIEw.setVisibility(VIEw.GONE);
rotation = new Rotate3d(90,false);
}
rotation.setDuration(500);
rotation.setFillAfter(true);
rotation.setInterpolator(new DecelerateInterpolator());
mContainer.startAnimation(rotation);
}
}
}
以上是内存溢出为你收集整理的Android图片翻转动画简易实现代码全部内容,希望文章能够帮你解决Android图片翻转动画简易实现代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)