2011-06-27 9 views
1

最初のレイアウトがロードされるときにアプリケーションバナーがゆっくりとフェードインするようなウェルカムスクリーンを構築しようとしています。透明度を制御してフェードイン/フェードアウトするAndroid ImageView

単純なアプローチでは、imageViewクラスを拡張してフェードアウトコードをonDrawメソッドに追加するだけですが、何らかの理由でAndroidがImageViewをまったく表示しないことがあります。

このように見えるように使用される静的イメージとXML:私はちょうどここにlogosmallロードし、それは素晴らしい動作しますが、ロゴは最初から完全に見える

<ImageView 
android:src="@drawable/logosmall" 
android:adjustViewBounds="true" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/imageLogo"/> 

と私のカスタムImageViewのクラスを呼び出すための新しいXMLはほとんど同じです:

<com.mydomainhere.customImageView 
android:src="@drawable/logosmall" 
android:adjustViewBounds="true" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/imageLogo"/> 

カスタムクラスのコードは非常に単純です、私はちょうどonDrawメソッドをオーバーライドして無効にする必要があります。

public class customImageView extends ImageView{ 
    private float mAlpha = 5f; 
    private float mDelta = 1f; 

    public customImageView(Context context) { 
     super(context); 
    } 

    public customImageView(Context context, AttributeSet attrs) { 
     super(context); 
     this.setAlpha((int)mAlpha); 

    } 


    @Override 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     if (mAlpha > 254){ 
      mDelta = -1f; 
     } 
     if (mAlpha < 1){ 
      mDelta = 1f; 
     } 
     mAlpha = mAlpha + mDelta; 
     this.setAlpha((int)mAlpha); 

     this.invalidate();  
    } 

} 

だから私は私の最初のウェルカム画面で中とフェードアウトの素敵なロゴやバナーを与えるために、このコードを期待していたが、Androidのは、どういうわけか、私のすべてでXMLから「ありがとうございますSmallLogo」をロードするために失敗しています。

この段階では、XMLでカスタムコンポーネントを使用する能力があり、アンドロイドがXMLを正しくレンダリングできるかどうか心配しています。これはかなり簡単です。

Javaからすべてのロゴpngファイルがロードされていても、問題なく表示されますが、標準のImageViewクラスのクラスであってもxmlからロゴpgnファイルを読み込むことができません。

ご協力いただきありがとうございます。

答えて

0

引数のattrsをビューの親コンストラクタに渡す必要があるようです。

0

ImageViewをサブクラス化する代わりに、Fade In Fade Out Android Animation in Javaというアニメーションを使用するだけではどうですか?

アニメーションを修正してから、ビューを読み込むときにアニメーションを開始するだけです。

関連する問題