Animate ImageView from alpha 0 to 1

2020-05-09 07:04发布

I have an imageView that I want to start as invisible. After a certain button is clicked, I want to animate the Image into view and then I want it to remain at alpha 1. How do I do that? So far no luck. If I set the alpha to 0 in xml, then I never see the image. If I don't set alpha in xml then the image is always visible, and when the button is clicked it animates from 0 to 1 alpha.

Here is my animation code.

AlphaAnimation animation1 = new AlphaAnimation(0.0f, 1.0f);
    animation1.setDuration(1000);
    animation1.setStartOffset(5000);
    animation1.setFillAfter(true);
    tokenBtn.startAnimation(animation1);

3条回答
乱世女痞
2楼-- · 2020-05-09 07:25

Try to make your ImageView invisible in xml:

<ImageView
    ...
    android:visibility="invisible"/>

Then, by adding an AnimationListener, make it visible in onAnimationStart:

...
animation1.setFillAfter(true);
animation1.setAnimationListener(new AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
        // pass it visible before starting the animation
        tokenBtn.setVisibility(View.VISIBLE);
    }

    @Override
    public void onAnimationRepeat(Animation animation) {    }
    @Override
    public void onAnimationEnd(Animation animation) {    }
});
// finally, start the animation
tokenBtn.startAnimation(animation1);
查看更多
三岁会撩人
3楼-- · 2020-05-09 07:36

In MainActivity.java add

public void blink(View view) {
        ImageView image = (ImageView) findViewById(R.id.imageView);
        Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.blink);
        image.startAnimation(animation1);
    }

Create file named blink.xml in res>anim folder and add this code

<?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--"
        android:repeatMode="reverse"
        android:repeatCount="0"/>
</set>

And make sure that onClick function on button is named blink

查看更多
趁早两清
4楼-- · 2020-05-09 07:47

You can simply set initial alpha to 0 then animate it through 1 with desired duration;

imageView.setAlpha(0);

imageView.animate()
    .alpha(1)
    .setDuration(200);
查看更多
登录 后发表回答