0

フェード イン/フェード アウトなしでアルファ アニメーションを作成することは可能ですか? ということで、最終的にはオンとオフのみになります。

これまでのコードのスニペット:

imPreview.setImageDrawable(imgColorDotPreview);
Animation animationFlashing = new AlphaAnimation(1, 0); // Change alpha from fully visible to invisible
animationFlashing.setDuration(5000);
animationFlashing.setRepeatCount(Animation.INFINITE); // Repeat animation infinitely
animationFlashing.setRepeatMode(Animation.REVERSE);
imPreview.setAnimation(animationFlashing);
startAnimation();

AlphaAnimation を使用しない別の方法を考えていました。これは、タイマーを使用して画像のアルファを 0 と 1 に直接設定するだけです。しかし、私はそれを無限に作る必要があります。

どんな助けや提案も大歓迎です! みんなありがとう!

4

2 に答える 2

2

ビューの可視性を設定するだけです:

view.setVisibility(View.VISIBLE);
view.setVisibility(View.INVISIBLE);
于 2013-10-28T04:35:56.847 に答える
0

さて、AlphaAnimationを使用したいくつかの回避策で、最終的に自分で解決しました。

setOnAnimationListener を使用し、onRepeat() で画像のアルファを変更しました。

imPreview.setImageDrawable(imgColorDotPreviewFlashing);
final Animation animationFlashing = new AlphaAnimation(1f,1f);
animationFlashing.setDuration(250); // duration - quarter a second
animationFlashing.setRepeatCount(Animation.INFINITE); // Repeat animation infinitely
animationFlashing.setRepeatMode(Animation.REVERSE);
animationFlashing.setAnimationListener(new AnimationListener(){
    @Override
    public void onAnimationEnd(Animation animation) {
        if(animation == animationFlashing){
        imPreview.setImageAlpha(255);
        }
    }
    @Override
    public void onAnimationRepeat(Animation animation) {
        if(animation == animationFlashing){
            if(imPreview.getImageAlpha()==0) imPreview.setImageAlpha(255);
            else imPreview.setImageAlpha(0);
        }
    }
    @Override
    public void onAnimationStart(Animation animation) {
        if(animation == animationFlashing){
            imPreview.setImageAlpha(255);
        }
    }
});                          
imPreview.setAnimation(animationFlashing);
startAnimation();
于 2013-10-28T07:36:42.663 に答える