1. 程式人生 > >網路載入圖片,Fresco、ImageLoader、Picasso的使用

網路載入圖片,Fresco、ImageLoader、Picasso的使用

1.Fresco 的使用

加入依賴

//fresco 圖片依賴 記得配置App初始化

 implementation 'com.facebook.fresco:fresco:1.11.0'

//fresco GIF依賴 記得配置App初始化

  implementation 'com.facebook.fresco:animated-gif:1.11.0'

配置App全域性設定

public class App extends Application {
@Override
public void onCreate() {
    super.onCreate();
 ===============無快取========
//        //呼叫Fresco類 裡的初始化方法 傳上下文this  然後在清單檔案新增
//        Fresco.initialize(this);
 ===============有快取========
    // 高階初始化   
    Fresco.initialize(this, ImagePipelineConfig.newBuilder(App.this)
            .setMainDiskCacheConfig(
                    DiskCacheConfig.newBuilder(this)
                            .setBaseDirectoryPath(new File("SD卡路徑")) // 注意Android執行時許可權。
                            .build()
            )
            .build()
    );


}
}

配置清單檔案

<application
    android:name=".App"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

** 在佈局中加入控制元件**

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/simple_view"
    android:layout_width="100dp"
    android:layout_height="100dp"
    fresco:roundAsCircle="true"
    />

開始使用

//找到控制元件
simple =(SimpleDraweeView) findViewById(R.id.simple_view);

//1、直接載入
Uri uri = Uri.parse("圖片連結");
//          simple.setImageURI(uri);
載入本地資源需要 載入本地路徑
  例: String urlgif1="res:///"+R.drawable.tt1;
  
// 2、載入gif
    AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
            //圖片地址
            .setUri(urlgif1)
            //播放gif 圖片
            .setAutoPlayAnimations(true)
            //點選重新載入時 可以重新載入4 次
            .setTapToRetryEnabled(true)
            .build();
    simple.setController(controller);

高斯模糊

 	呼叫高斯模糊
 	 showUrlBlur(simple,url,100,10);

// 高斯模糊的方法

public static void showUrlBlur(SimpleDraweeView draweeView, String url, int iterations, int blurRadius) {
    try {
        Uri uri = Uri.parse(url);
        ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
                .setPostprocessor(new IterativeBoxBlurPostProcessor(iterations, blurRadius))
                .build();
        AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
                .setOldController(draweeView.getController())
                .setImageRequest(request)
                .build();
        draweeView.setController(controller);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

ImageLoader的適用

加入依賴

implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

佈局里加控制元件

<ImageView
     android:layout_width="150dp"
     android:layout_height="wrap_content"
     android:id="@+id/image1"
     android:src="@mipmap/ic_launcher"
     />

配置App

public class App extends Application {
@Override
public void onCreate() {
    super.onCreate();
    ImageLoaderConfiguration aDefault = ImageLoaderConfiguration.createDefault(this);
    ImageLoader.getInstance().init(aDefault);
}
}

找到控制元件並賦值

 ImageLoader.getInstance().displayImage(url,view);

Picasso

加入依賴

implementation 'com.squareup.picasso:picasso:2.3.2'

找到控制元件直接賦值

			Picasso.with(context).load(url).fit().into(view);