サーチ…


前書き

フレスコ画は、Androidアプリケーションで画像を表示するための強力なシステムです。

Android 4.x以降では、FrescoはAndroidメモリ (ashmemと呼ばれる)の特別な領域に画像を配置します。これにより、アプリケーションの実行時間が短縮され、恐ろしいOutOfMemoryErrorの被害が軽減されます。

FrescoはJPEGのストリーミングもサポートしています。

備考

アプリレベルbuild.gradleファイルの依存関係を設定するには:

dependencies {
    // Your app's other dependencies.
    compile 'com.facebook.fresco:fresco:0.14.1' // Or a newer version if available.
}

詳細はこちらをご覧ください

フレスコ画

最初に、「備考」セクションに示すように、Frescoをbuild.gradleに追加します。

アニメーションGIFやWebPサポートなどの追加機能が必要な場合は、対応するFrescoアーティファクトも追加する必要があります。

フレスコ画を初期化する必要があります。これを1回だけ行う必要があるため、 Application初期設定を配置することをお勧めします。これの例は次のとおりです。

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

サーバーからリモートイメージをロードする場合は、アプリケーションにinterntアクセス権が必要です。単にAndroidManifest.xml追加してください:

<uses-permission android:name="android.permission.INTERNET" />

次に、XMLレイアウトにSimpleDraweeViewを追加します。フレスコ画は、寸法が異なる複数の画像(プレースホルダ画像、エラー画像、実際の画像など)がある可能性があるため、画像寸法のwrap_contentをサポートしていません。

したがって、固定ディメンション(またはmatch_parent )を持つSimpleDraweeViewを追加することもできます:

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="120dp"
    android:layout_height="120dp"
    fresco:placeholderImage="@drawable/placeholder" />

または、画像のアスペクト比を指定します。

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    fresco:viewAspectRatio="1.33"
    fresco:placeholderImage="@drawable/placeholder" />

最後に、イメージURIをJavaで設定することができます:

SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI("http://yourdomain.com/yourimage.jpg");

それでおしまい!ネットワークイメージが取得されるまで、プレースホルダードロアブルが表示されます。

フレスコとOkHttp 3を使う

まず、通常のフレスコGradleの依存性に加えて、あなたはあなたにOkHttp 3依存関係を追加する必要がありbuild.gradle

compile "com.facebook.fresco:imagepipeline-okhttp3:1.2.0" // Or a newer version.

Frescoを初期化するとき(通常はカスタムApplication実装で)、OkHttpクライアントを指定できるようになりました:

OkHttpClient okHttpClient = new OkHttpClient(); // Build on your own OkHttpClient.

Context context = ... // Your Application context.
ImagePipelineConfig config = OkHttpImagePipelineConfigFactory
        .newBuilder(context, okHttpClient)
        .build();
Fresco.initialize(context, config);

DraweeControllerを使用したJPEGによるフレスコ画のストリーミング

この例では、すでにアプリケーションにFrescoを追加していることを前提としています( この例を参照)。

SimpleDraweeView img = new SimpleDraweeView(context);
ImageRequest request = ImageRequestBuilder
        .newBuilderWithSource(Uri.parse("http://example.com/image.png"))
        .setProgressiveRenderingEnabled(true) // This is where the magic happens.
        .build();

DraweeController controller = Fresco.newDraweeControllerBuilder()
        .setImageRequest(request)
        .setOldController(img.getController()) // Get the current controller from our SimpleDraweeView.
        .build();

img.setController(controller); // Set the new controller to the SimpleDraweeView to enable progressive JPEGs.


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow