2017-11-19 12 views
1

Firebase Storage、Real-Time Databaseを使用してAndroidアプリを構築しています。このアプリではユーザーが画像をアップロードしたり、他のユーザーがその画像を見ることができます。現時点では、プラグインを使用して画像のサイズを変更し、画像を切り取り、Firebaseのストレージバケットにその画像の800x800解像度のバージョンを保存しています。これは他のユーザーが見ているものです。それはうまくいきますが、800x800の解像度制限を削除して、巨大な解像度を持つデバイスのユーザーがより高画質の画像を見ることができるようにしたいと思います。問題は、私はこのために最善のプロセスが何であるかを理解することができないということです。 現在、私はFirebaseストレージからdownloadURLを取得した後、Glideライブラリを使用してイメージのロードを処理しています。私がしたいのは、ユーザーが最初にその画像をスクロールしてビューに小さな200x200の解像度の画像を素早くロードした後、ロードしているときなど、アプリが低解像度の画像をロードできるようにすることですバックグラウンドでのフルスケールの解像度。フル解像度のものがダウンロードされると、低解像度のものをフル解像度のものに置き換えます。大きな解像度がダウンロードされるまで、より小さい解像度の画像をロードする

Instagramのようなアプリで、ユーザーが本当に高画質の画像をアップロードした場合、その投稿を最初にスクロールすると、画像はピクセル化されていますが、 2イメージは本当に高品質です。 バックアップされたFirebase関数のロジックを処理して、アップロード後に画像のサイズを変更し、2種類の解像度を保存することができます。私はちょうどそれの読み込み終了に固執した。私は検索して検索して検索して、実際にはそれほど多く見つけることはできません。なぜそれをやるべきなのかについて多くの記事がありますが、実際にそのような作業をどのように達成するのかについての実際の例は見つかりません。私は本当に、その後、高解像度の一つの第一の低解像度の画像を読み込む処理する方法のいくつかの助けを使用することができ

Glide.with(this).load(imageURL).into(imageView); 

現在、私のイメージは非常に簡単にロードされ、文書が道を推奨

...アイテムが1秒間表示された後ありがとうございました。

答えて

1

低解像度は最初に読み込むことができます。これはかなり高速ですが、低解像度画像が読み込まれると高解像度の画像を読み込むことができます。

Glide.with(this) 
.load(lowResImageUrl) 
.listener(new RequestListener<String, GlideDrawable>() { 
    @Override 
    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
     return false; 
    } 

    @Override 
    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
     Glide.with(yourContext).load(highResImage).into(imageView); 
     return false; 
    } 
}) 
.into(imageView) 
+0

美しい!ありがとうございました。グライドで何らかのコールバックがサポートされているかどうか疑問に思っていました。 –

関連する問題