4

Androidのアルファアニメーションに色を適用する方法はありますか?要素の使用方法は知って<alpha>いますが、レイアウトを強調できるように、アルファにアルファだけでなく色も適用させたいのですが。これは可能ですか?

4

2 に答える 2

3

Androidでは、アニメーションに色の変更を含めることはできません。含まれるのは、アルファ、回転、スケール、および平行移動のみです。

とはいえ、異なる色の2つのオブジェクトを重ね合わせ、一番上のオブジェクトをフェードインまたはフェードアウトすることで、色を変更することもできます。

TransitionDrawableまたはTextSwitcherを調べて、同様のことを実行することもできます。将来のアップデートで、カラーアニメーションの完全なサポートを利用できるようになることを願っています。

于 2010-07-14T14:55:33.363 に答える
1

これが、画面の特定の領域をアニメーション化する私のソリューションです(下のデモを参照)。このコードは、 >=API9を実行するデバイスを対象としていることに注意してください。

ここに画像の説明を入力してください

初心者向け、コピーして貼り付けるだけ。

FadeAnimationColored.java

public class FadeAnimationColored {

private View view;
private float maxBrightness = 1.0f;
private float minBrightness = 0.0f;
private long duration = 400L;
private long startOffset = 0L;
private int color = android.R.color.white;

// Constructors...

public FadeAnimationColored(View view, String color, float maxBrightness, float minBrightness, long duration, long startOffset) {
    this.view = view;
    this.color = Color.parseColor(color);
    this.maxBrightness = maxBrightness;
    this.minBrightness = minBrightness;
    this.duration = duration;
    this.startOffset = startOffset;
    prepareView();
}


public void fadeOut() {
    this.view.setAlpha(1f);
    Animation anim = new AlphaAnimation(minBrightness, maxBrightness);
    anim.setDuration(duration);
    anim.setStartOffset(startOffset);
    anim.setFillEnabled(true);
    anim.setFillAfter(true);
    view.startAnimation(anim);
}


public void fadeIn() {
    Animation anim = new AlphaAnimation(maxBrightness, minBrightness);
    anim.setDuration(duration);
    anim.setStartOffset(startOffset);
    anim.setFillEnabled(true);
    anim.setFillAfter(true);
    view.startAnimation(anim);
}


private void prepareView() {
    this.view.setBackgroundColor(this.color);
    this.view.setAlpha(0f);
}
}

次に、レイアウトにビューを追加し、それをオーバーレイと考えます(私FrameLayoutはに設定されたシンプルを使用しましたmatch_parent

アクティビティまたはフラグメントでアニメーションを設定する方法を示すスニペットを次に示します。

FrameLayout interceptorFrame = (FrameLayout) mView.findViewById(R.id.fl_interceptor);

final FadeAnimationColored fadeAnimationLayout =
        new FadeAnimationColored(interceptorFrame, MaterialColor.GREY_800, 0.9f, 0.0f, 400L, 0);

mFabMenu.setOnMenuToggleListener(new FloatingActionMenu.OnMenuToggleListener() {
    @Override
    public void onMenuToggle(boolean opened) {
        if (opened) {
            fadeAnimationLayout.fadeOut();
        } else {
            fadeAnimationLayout.fadeIn();
        }
    }
});
于 2015-12-04T19:26:35.917 に答える