1

使用此代码进行淡入和淡出,这是行不通的。有任何想法吗 ?

公共类 MainActivity 扩展 AppCompatActivity {

public void picChange(View view) {

    ImageView youngF = (ImageView) findViewById(R.id.firstPic);

    ImageView biggerF = (ImageView) findViewById(R.id.secondPic);


    youngF.animate().alpha(0f).setDuration(2000);
    biggerF.animate().alpha(1f).setDuration(2000);
}


public void back (View view) {

    ImageView youngBack = (ImageView) findViewById(R.id.firstPic);

    ImageView biggBack = (ImageView) findViewById(R.id.secondPic);

    biggBack.animate().alpha(0f).setDuration(2000);
    youngBack.animate().alpha(1f).setDuration(2000);

}

使用此代码进行淡入和淡出,这是行不通的。有任何想法吗 ?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getSupportActionBar().hide();
}

}

4

2 回答 2

1

创建 XML 文件以定义动画

用于淡入动画fade_in.xml

    <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator">
   <alpha
        android:duration="2000"
        android:fromAlpha="0.1"
        android:toAlpha="1.0">
    </alpha>
</set>

对于淡出动画fade_out.xml

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <alpha
        android:duration="2000"
        android:fromAlpha="1.0"
        android:toAlpha="0.1" >
    </alpha>
</set>

然后在MainActivity

public void picChange(View view) {

ImageView youngF = (ImageView) findViewById(R.id.firstPic);

ImageView biggerF = (ImageView) findViewById(R.id.secondPic);

Animation animFadeIn = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fade_in);
                img.startAnimation(animFadeIn);

Animation animFadeOut = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fade_out);
                    img.startAnimation(animFadeOut);

youngF.startAnimation(animFadeIn);
biggerF.startAnimation(animFadeOut);

}
于 2018-05-29T09:43:27.823 回答
0
Animation fadeIn = new AlphaAnimation(0, 1);
    fadeIn.setInterpolator(new DecelerateInterpolator()); //add this
    fadeIn.setDuration(1000);

    Animation fadeOut = new AlphaAnimation(1, 0);
    fadeOut.setInterpolator(new AccelerateInterpolator()); //and this
    fadeOut.setStartOffset(1000);
    fadeOut.setDuration(1000);

    AnimationSet animation = new AnimationSet(false); //change to false
    animation.addAnimation(fadeIn);
    imgone.setAnimation(animation);

    AnimationSet animation1 = new AnimationSet(false); //change to false
    animation1.addAnimation(fadeOut);
    imgtwo.setAnimation(animation1);
于 2018-05-29T10:46:29.290 回答