5

フェードインアニメーションをImageViewに適用して、URLからロードされた画像がダウンロードの完了時にフェードインする効果を作成したいと思います。

この回答のように、URLからImageViewに画像をダウンロードする方法を知っています。また、ここのように、フェードインアニメーションをimageViewに適用する方法も知っています。

この試み

Drawable d = ImageUtils.fetchDrawable("the url");
imageView.setImageDrawable(d);
imageView.startAnimation(fadeInAnimation);

まばたき効果が発生します(表示、非表示、フェードインして表示)。最後の2行の順序を逆にすると、点滅します。

私はグーグルで検索し、コールバック/リスナーの形で解決策を探しました-次のようなものです:

imageView.setOnLoadCompleteListener...

読み込み完了イベントをImageViewに登録しますが、これらの行に沿って何も見つかりませんでした。

この効果を実装する方法についての解決策へのポインタをいただければ幸いです。

4

3 に答える 3

32

使用できるもの:TransitionDrawable、次のような単純なコード:

        // Transition drawable with a transparent drwabale and the final bitmap
        final TransitionDrawable td =
                new TransitionDrawable(new Drawable[] {
                        new ColorDrawable(Color.TRANSPARENT),
                        new BitmapDrawable(mResources, bitmap)
                });
        // Set background to loading bitmap
        imageView.setBackgroundDrawable(
                new BitmapDrawable(mResources, mLoadingBitmap));

        imageView.setImageDrawable(td);
        td.startTransition(FADE_IN_TIME);
于 2013-04-04T11:55:46.873 に答える
2

ImageView可視性をアニメーションに設定するか INVISIBLE、アニメーションにGONE 設定setAnimationListenerします。とonAnimationEnd の可視性を変更するときImageView

fadeInAnimation.setAnimationListener(new AnimationListener() {
        @Override
        public void onAnimationEnd(Animation arg0) {

           // let make your image visible


        }

        @Override
        public void onAnimationRepeat(Animation animation) {}
        @Override
        public void onAnimationStart(Animation animation) {}
    });
于 2012-05-02T15:34:33.593 に答える
0

あなたが言及したその答えのonPostExecuteメソッドを使用し、そこでアニメーションをトリガーするだけです(画像が実際にロードされて準備ができているとき):

 protected void onPostExecute(Bitmap result) {

    bmImage.setImageBitmap(result);
    Animation myFadeInAnimation = AnimationUtils.loadAnimation(context, R.anim.fadein);
    bmImage.startAnimation(myFadeInAnimation);
}
于 2021-11-15T20:13:50.510 に答える