網路載入圖片,Fresco、ImageLoader、Picasso的使用
阿新 • • 發佈:2018-12-19
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);