我正在开发一个工作简单且工作效率很高的应用程序。但我有一个地方看起来不太好,那就是翻转动画。
我想要的是 :
我有一个 Button 和按钮下方的 ImageView。单击按钮时,我想制作一个动画,看起来 ImageView 已翻转,并且下一个图像显示在 ImageView 中。因此,每次单击时,它都应该显示下一张带有翻转动画的图像,但存在一些问题。我稍后会讨论,但首先让我向您展示我是如何做到这一点的。
到目前为止我所做的:
翻转.xml
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:valueFrom="0" android:valueTo="180" android:propertyName="rotationY" >
</objectAnimator>
在活动中
@Override
public void onClick(View v) {
flipAnimation();
ivAnimPicture.setImageResource(myImage1);
}
private void flipAnimation(){
ObjectAnimator anim = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.flipping);
anim.setTarget(ivAnimPicture);
anim.setDuration(1500);
anim.start();
}
Problem
当它从 0 旋转到 180 时,当它恰好达到 90 度时,我们可以看到图像视图边缘,因此这使得动画看起来不太好。此外,图像首先发生变化,然后翻转动画开始,正如我希望的那样,翻转动画应该开始,并且新图像应该出现在其中。因此,当动画停止时,用户应该会看到令人惊讶的新图像。
所以我真的不希望在图像视图中设置图像,然后动画启动并对图像视图进行动画处理
请建议我更好的方法或者是否有尚未过时的库。
查图兰加的解决方案可以完成这项工作。但你最好:
1.Use ViewPropertyAnimator
。特别是,当您需要在多个上执行不同的动画时ImageViews
.
2.旋转自270f
to 360f
第二次翻转,否则你的图像将是mirrored.
3.将第二个图像加载到Drawable
before开始动画,有一个smooth回转。
final Drawable drawable=getResources().getDrawable(R.drawable.a);
final ImageView iv = ((ImageView)findViewById(R.id.imageView1));
iv.setRotationY(0f);
iv.animate().rotationY(90f).setListener(new AnimatorListenerAdapter()
{
@Override
public void onAnimationEnd(Animator animation)
{
iv.setImageDrawable(drawable);
iv.setRotationY(270f);
iv.animate().rotationY(360f).setListener(null);
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)