レイアウトのアルファ/不透明度を設定して取得できますか?それはすべて子ビューですか?私は背景について話しているわけではありません。相対レイアウトで再生、一時停止、プログレスバーなどのビデオコントロールのコレクションを言う。レイアウトのアルファ/不透明度を設定する
フェードインとフェードアウトにアニメーションを使用できますが、私が使用できる直接的な方法があるかどうかを知りたがっています。
レイアウトのアルファ/不透明度を設定して取得できますか?それはすべて子ビューですか?私は背景について話しているわけではありません。相対レイアウトで再生、一時停止、プログレスバーなどのビデオコントロールのコレクションを言う。レイアウトのアルファ/不透明度を設定する
フェードインとフェードアウトにアニメーションを使用できますが、私が使用できる直接的な方法があるかどうかを知りたがっています。
AlphaAnimationを0 durationとsetFillAfterオプションで使用して、レイアウト上にアルファを設定することができます。
例:
AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
alpha.setDuration(0); // Make animation instant
alpha.setFillAfter(true); // Tell it to persist after the animation ends
// And then on your layout
yourLayout.startAnimation(alpha);
あなたはメモリを節約するために、複数のコンポーネントの1つのアニメーションを使用することができます。再度使用するにはreset()を、アルファを削除するにはclearAnimation()を実行します。
粗くてハッキングされているように見えますが、メモリやプロセッサ時間があまりかからないset ovビューでは、実際にはアルファを設定するのが良い方法です。
現在のアルファ値を取得することについてはわかりません。
アレックスのソリューションは機能しますが、別の方法は、子を描画する前にCanvas.saveLayerAlpha()を呼び出すカスタムビューを作成することです。アンドロイド3.0で新しいView.setAlpha()APIがあることに注意してください:)ここ
ありがとう、setAlphaメソッドを楽しみにしています。私は他の言語から多くを使用しています。 –
は、すべてのバージョン(thanks to @AlexOrlov)間で動作します方法であって、明らかに
@SuppressLint("NewApi")
public static void setAlpha(View view, float alpha)
{
if (Build.VERSION.SDK_INT < 11)
{
final AlphaAnimation animation = new AlphaAnimation(alpha, alpha);
animation.setDuration(0);
animation.setFillAfter(true);
view.startAnimation(animation);
}
else view.setAlpha(alpha);
}
、APIのために少ない11よりもあなたならばその子を描画する前にを呼び出すカスタムビューを作成する必要がありますか(thanks to @RomainGuy)。
これでViewCompat.setAlpha(View, float)
を使用できます。
docからの引用: "* API11以前ではこれは無効です。*" – Pang
このような方法はありません。私は最小限のAPIを11に設定しました。しかし、それはViewCompat.getAlpha(anyView)メソッドを持っています –
ていますが、アルファをしたい場合は、ViewCompatクラスを使用することができます
ViewCompat.setAlpha(ビュービュー、フロートアルファ)
ViewCompatはAPPCOMPAT v4の
に感謝です。私はアニメーションを使用していましたが、setFillAfterメソッドを使用する代わりに、アニメーションが完了するとオブジェクトの可視性が消えるように設定していました。 –
アニメーションを中断しているようです(アニメーション中に実行された場合)。これに対する修正? – Sufian
回避策として、半透明のイメージセットを 'View'のバックグラウンドとして使用しました。 – Sufian