4

イメージに FadeInBitmapDisplayer と RoundedBitmapDisplayer を追加するにはどうすればよいですか?

これは私の DisplayImageOptions です

options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.appwidget
.cacheInMemory().displayer(new FadeInBitmapDisplayer(1500))
.build();

そして、どうにかして FadeIn Effect を 1 回だけ使用することは可能ですか? そして、それがロードされ、リストを下にスクロールして再び上にスクロールすると、もう一度 FadeIn しませんか?

よろしくお願いします!

4

3 に答える 3

11

イメージに FadeInBitmapDisplayer と RoundedBitmapDisplayer を追加するにはどうすればよいですか?

現在のバージョンではありえません。独自の表示器を作成し (BitmapDisplayer を拡張)、コードを FadeInBitmapDisplayer および RoundedBitmapDisplayer からクラスにコピーできます。

そして、どうにかして FadeIn Effect を 1 回だけ使用することは可能ですか?

ほとんどすべてが可能です:)しかし、それほど便利ではありません。

表示された画像の URL をいくつかのマップ ( Map<String, Boolean>= [画像の URL<->isDisplayed]) に保持し、imageLoader.displayImage(...)呼び出しの前にこのマップを確認できます。現在の URL の画像がマップにある (つまり、画像が表示された) 場合は、RoundedBitmapDisplayer のみでオプションを使用します。現在の URL の画像が Map にない場合は、FadeInBitmapDisplayer+RoundedBitmapDisplayer displayer のオプションを使用します。

于 2012-12-02T15:03:47.543 に答える
3

現在の Universal Image Loader バージョン (1.9.4) では動作していなかったため、@saschoar ソリューションを更新する必要がありました。解決策は非常に似ています。見てみましょう:

public class FadeInRoundedBitmapDisplayer extends RoundedBitmapDisplayer {

    int durationMillis;

    public FadeInRoundedBitmapDisplayer(int durationMillis, int roundPixels) {

        super(roundPixels);
        this.durationMillis = durationMillis;
    }

    @Override
    public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) {

        super.display(bitmap, imageAware, loadedFrom);

        animate(imageAware.getWrappedView(), durationMillis);
    }

    public static void animate(View imageView, int durationMillis) {

        AlphaAnimation fadeImage = new AlphaAnimation(0, 1);
        fadeImage.setDuration(durationMillis);
        fadeImage.setInterpolator(new DecelerateInterpolator());
        imageView.startAnimation(fadeImage);
    }
}

このソリューションを使用して、次の方法で DisplayImageOptions を定義できます。

    DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
        .displayer(new FadeInRoundedBitmapDisplayer(3000, 1000))
        .build();

    ImageLoader imageLoader = ImageLoader.getInstance();
    imageLoader.displayImage(imageUrl, imageView, displayImageOptions);
于 2015-11-03T15:26:28.643 に答える