admin管理员组文章数量:1318589
android 页面反转动画,android
android-反转动画
我有一个ImageView,当它添加到布局中时会动画。删除后,我想反转相同的动画。
有没有一种方法可以在android中反转动画而无需重新编码和反转参数?
pbreault asked 2020-07-08T06:22:20Z
8个解决方案
75 votes
不,可悲的是您不能使用Animation对象来做到这一点。但是,您可以使用将反转动画的插值器对其进行仿真:
package com.example.android;
import android.view.animation.Interpolator;
public class ReverseInterpolator implements Interpolator {
@Override
public float getInterpolation(float paramFloat) {
return Math.abs(paramFloat -1f);
}
}
然后可以在动画上设置新的插值器:
myAnimation.setInterpolator(new ReverseInterpolator());
pcans answered 2020-07-08T06:22:41Z
25 votes
如果您使用Object或ValueAnimator对视图进行动画处理,则只需
ValueAnimator myAnimator = new ValueAnimator();
myAnimator.reverse()
文档可以在这里找到。
thehayro answered 2020-07-08T06:23:06Z
13 votes
基于pcans的想法,您可以反转任何内插器,而不仅仅是线性。
class ReverseInterpolator implements Interpolator{
private final Interpolator delegate;
public ReverseInterpolator(Interpolator delegate){
this.delegate = delegate;
}
public ReverseInterpolator(){
this(new LinearInterpolator());
}
@Override
public float getInterpolation(float input) {
return 1 - delegate.getInterpolation(input);
}
}
用法
ReverseInterpolator reverseInterpolator = new ReverseInterpolator(new AccelerateInterpolator())
myAnimation.setInterpolator(reverseInterpolator);
Ilya Gazman answered 2020-07-08T06:23:31Z
6 votes
对于pcan,我有类似的方法,但略有不同。 它需要Interpolator,并将有效地传出与在Interpolator中正常使用然后在REVERSE模式下使用的值相同的值。 让您不必考虑在Android上Animation.REVERSE的错误实现。 在这里查看代码
public class ReverseInterpolator implements Interpolator {
private final Interpolator mInterpolator;
public ReverseInterpolator(Interpolator interpolator){
mInterpolator = interpolator;
}
@Override
public float getInterpolation(float input) {
return mInterpolator.getInterpolation(reverseInput(input));
}
/**
* Map value so 0-0.5 = 0-1 and 0.5-1 = 1-0
*/
private float reverseInput(float input){
if(input <= 0.5)
return input*2;
else
return Math.abs(input-1)*2;
}
}
Dori answered 2020-07-08T06:23:53Z
1 votes
您可以使代码记住原始位置和结束位置。 并让您的代码在触发动画时动态获取这些值。
draw answered 2020-07-08T06:24:13Z
1 votes
我想到的最简单的解决方案
android:duration="2000"
android:fromAlpha="0.1"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toAlpha="1.0">
larisoft answered 2020-07-08T06:24:33Z
0 votes
如果您使用的是xml中的动画,那么一种简单的方法是制作与原始动画完全相同的反向动画。 将Animation.AnimationListener添加到原始动画中,并在onAnimationEnd中启动反向动画。
Khurram Shehzad answered 2020-07-08T06:24:53Z
0 votes
这对我有用
ObjectAnimator anim = ObjectAnimator.ofFloat(imageViewUpb, "rotation", rotationAngle, rotationAngle + 180);
if (linearLayoutb.getVisibility()==GONE){
linearLayoutb.setVisibility(VISIBLE);
anim.setDuration(500);
anim.start();
rotationAngle += 180;
rotationAngle = rotationAngle%360;
imageViewUpb.animate().rotation(rotationAngle).setDuration(500).start();
}else{
linearLayoutb.setVisibility(GONE);
anim.setDuration(500);
anim.start();
rotationAngle += 180;
rotationAngle = rotationAngle%180;
imageViewUpDownb.animate().rotation(rotationAngle).setDuration(500).start();
}
linearlayoutb是当imageviewUpb朝上时展开的视图
使int rotationAngle = 0; global parameter
Goodlife answered 2020-07-08T06:25:22Z
本文标签: android 页面反转动画Android
版权声明:本文标题:android 页面反转动画,android 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1701414981a396815.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论