2011-01-27 13 views
19

レイアウトのアルファ/不透明度を設定して取得できますか?それはすべて子ビューですか?私は背景について話しているわけではありません。相対レイアウトで再生、一時停止、プログレスバーなどのビデオコントロールのコレクションを言う。レイアウトのアルファ/不透明度を設定する

フェードインとフェードアウトにアニメーションを使用できますが、私が使用できる直接的な方法があるかどうかを知りたがっています。

答えて

59

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ビューでは、実際にはアルファを設定するのが良い方法です。

現在のアルファ値を取得することについてはわかりません。

+0

に感謝です。私はアニメーションを使用していましたが、setFillAfterメソッドを使用する代わりに、アニメーションが完了するとオブジェクトの可視性が消えるように設定していました。 –

+0

アニメーションを中断しているようです(アニメーション中に実行された場合)。これに対する修正? – Sufian

+0

回避策として、半透明のイメージセットを 'View'のバックグラウンドとして使用しました。 – Sufian

6

アレックスのソリューションは機能しますが、別の方法は、子を描画する前にCanvas.saveLayerAlpha()を呼び出すカスタムビューを作成することです。アンドロイド3.0で新しいView.setAlpha()APIがあることに注意してください:)ここ

+0

ありがとう、setAlphaメソッドを楽しみにしています。私は他の言語から多くを使用しています。 –

15

は、すべてのバージョン(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)。

+0

これは完璧です、ありがとう – Selecsosi

+0

ありがとうTakhion。 @SuppressLint( "NewApi"):)を追加します。 – Nifhel

+0

Use:ViewCompat.setAlpha(View、float)。 – TomerBu

3

これでViewCompat.setAlpha(View, float)を使用できます。

私の答えのために申し訳ありません
+0

docからの引用: "* API11以前ではこれは無効です。*" – Pang

+0

このような方法はありません。私は最小限のAPIを11に設定しました。しかし、それはViewCompat.getAlpha(anyView)メソッドを持っています –

0

ていますが、アルファをしたい場合は、ViewCompatクラスを使用することができます

ViewCompat.setAlpha(ビュービュー、フロートアルファ)

ViewCompatはAPPCOMPAT v4の

関連する問題