使用此代码我只有在衰落,我在寻找如何添加淡出,以及。 我已经添加了所谓的“淡出”另一个XML,但我不能在我的代码它集成。
ImageView imageView = (ImageView)findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
imageView.startAnimation(fadeInAnimation);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
imageView.startAnimation(fadeInAnimation);
}
}
fadein.xml
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="Your Duration(in milisecond)"
android:repeatCount="infinite"/>
</set>
这里是我的解决方案。 它使用AnimatorSet。 AnimationSet图书馆是漏洞太多让工作。 这提供了在衰落和流出之间的无缝和无限的过渡。
public static void setAlphaAnimation(View v) {
ObjectAnimator fadeOut = ObjectAnimator.ofFloat(v, "alpha", 1f, .3f);
fadeOut.setDuration(2000);
ObjectAnimator fadeIn = ObjectAnimator.ofFloat(v, "alpha", .3f, 1f);
fadeIn.setDuration(2000);
final AnimatorSet mAnimationSet = new AnimatorSet();
mAnimationSet.play(fadeIn).after(fadeOut);
mAnimationSet.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
mAnimationSet.start();
}
});
mAnimationSet.start();
}
这是一个好的例子Fade In and Fade Out Animation with Alpha Effect
动画淡入淡出
更新 :
检查这个答案可以在此帮助你
从来就在科特林一直在努力(推荐给大家),所以语法可能有点过。 我要做的就是简单地调用:
v.animate().alpha(0f).duration = 200
我认为,在Java中,这将是以下:
v.animate().alpha(0f).setDuration(200)
尝试:
private void hide(View v, int duration) {
v.animate().alpha(0f).setDuration(duration)
}
private void show(View v, int duration) {
v.animate().alpha(1f).setDuration(duration)
}
根据该文件AnimationSet
代表一组动画的应该一起玩。 每个单独的动画的变换是由在一起成为一个单一的变换。 如果AnimationSet设置,其子女也设置任何属性(例如,持续时间或fillBefore),AnimationSet的值覆盖子值
AnimationSet mAnimationSet = new AnimationSet(false); //false means don't share interpolators
传递true,如果所有在这套动画应该使用与此相关的AnimationSet插补。 通假,如果每个动画应该使用自己的内插器。
ImageView imageView= (ImageView)findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in);
Animation fadeOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out);
mAnimationSet.addAnimation(fadeInAnimation);
mAnimationSet.addAnimation(fadeOutAnimation);
imageView.startAnimation(mAnimationSet);
我希望这能帮到您。
我们可以简单地使用:
public void animStart(View view) {
if(count==0){
Log.d("count", String.valueOf(count));
i1.animate().alpha(0f).setDuration(2000);
i2.animate().alpha(1f).setDuration(2000);
count =1;
}
else if(count==1){
Log.d("count", String.valueOf(count));
count =0;
i2.animate().alpha(0f).setDuration(2000);
i1.animate().alpha(1f).setDuration(2000);
}
}
其中i1和i2在onCreateView()如定义为:
i1 = (ImageView)findViewById(R.id.firstImage);
i2 = (ImageView)findViewById(R.id.secondImage);
计数是一个类变量initilaized为0。
XML文件是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/secondImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="animStart"
android:src="@drawable/second" />
<ImageView
android:id="@+id/firstImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="animStart"
android:src="@drawable/first" />
</RelativeLayout>
和是在res的绘制文件夹中的图像。