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