国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android使用開源框架Fresco處理圖片

2019-12-12 04:02:52
字體:
來源:轉載
供稿:網友

關于Fresco的優點大家自行谷歌吧,它太強大太優秀了,我這一片小博文容納不下啊羨慕,今天主要給大家簡單介紹下Fresco的使用以及一些屬性的介紹。

 Fresco是一個強大的圖片加載組件。使用它之后,你不需要再去關心圖片的加載和顯示這些繁瑣的事情!支持Android2.3及以后的版本。

官網詳細介紹了Fresco一些特性,我第一次看確實是驚呆了。https://www.fresco-cn.org/

2016年Fresco的最新的源碼分析:https://github.com/desmond1121/Fresco-Source-Analysis

簡述與其他常用圖片緩存框架的比較

(1)Volley提供了一個新的控件NetworkImageView來代替傳統的ImageView如果你的工程項目,是一個比較小的項目,或者要求不是很高的項目,處理比較簡單的可以使用這個庫,這個庫是Google 2013 I/O發布的一個開源庫。使用這個庫在圖片的處理上,沒有提供任何的圖片處理的操作,用于細粒度的數據連接還是可以的。

(2)Universal-Image-Loader是比較早的一個圖片緩存組件,也一直受到開發者的推崇,在很多老的應用中使用。

(3)Picasso與Glide,無疑Glide勝出

(4)而Fresco作為新秀,不管從內存管理(三級緩存),圖片的漸進式呈現,Gif圖和Webp格式圖像的加載,都是非常突出。(也是我最喜歡用的)

涉及的常用基本屬性介紹

(1)layout_width和layout_height不支持warp_Content但是可以通過setAspectRetio();來設置寬高比

(2)fadeDuration()淡出時間;

(3)actualImageScaleType 設置圖片縮放,通常使用foucsCrop,該屬性值會通過算法把人頭像放在中間

(4)placeholderImage下載成功之前顯示的圖片placeholderImageScaleType

(5)failureImage加載失敗時顯示的圖片faiturelmagescateType

(6)retrylmage加載失敗,提示用戶點擊重新加載的圖片retrylmagescateType

(7)progressBarImage提示用戶正在加載,和進度無關progressBarlmagescateType

(8)progressBarAutoRotateInterval圖片自動旋轉的時間間隔

(9)backgroundImage背景

(10)overlayImage疊加圖

(11)pressedStateOverlayImage按下時候的疊加圖

(12)roundAsCircle是否涉及圓圈

(13)roundedCornerRadius圓角

(14)roundTopLeft、roundTopRight…..分別設置4個角不同半徑,設置為true以后可以在代碼中通過RoundingParams的setConnersRadii()方法設置角度。

(15)roundWithOverlayColor邊框的疊加顏色

(16)roundingBorderWidth邊框寬度

(17)roundingBorderColor邊框顏色

下面我們簡單演示使用Fresco加載網絡圖片的流程:
演示效果如下(你們猜對了,又是本人的玉照安靜):

第一步:導依賴包

與之前的android-image-indicator-master項目相同,本次依然使用AndroidStudio2.2。仍然采用在build.gradle下中dependencies下直接添加如下代碼:

compile 'com.facebook.fresco:fresco:0.12.0'

同時可以根據個人項目需求添加如下依賴:

dependencies {  // 在 API < 14 上的機器支持 WebP 時,需要添加  compile 'com.facebook.fresco:animated-base-support:0.12.0'  // 支持 GIF 動圖,需要添加  compile 'com.facebook.fresco:animated-gif:0.12.0'  // 支持 WebP (靜態圖+動圖),需要添加  compile 'com.facebook.fresco:animated-webp:0.12.0'  compile 'com.facebook.fresco:webpsupport:0.12.0'  // 僅支持 WebP 靜態圖,需要添加  compile 'com.facebook.fresco:webpsupport:0.12.0'}

第二步:添加網絡權限

因為是加載網絡圖片所以必須在 AndroidManifest.xml配置文件中添加網絡權限:

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

第三步:初始化Fresco類

在加載圖片之前,你必須初始化Fresco類。你只需要調用Fresco.initialize一次即可完成初始化,下面分別介紹在MainActivity與Application中調用初始化方法

(1)在Application調用初始化(建議使用)

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

做完上面的工作后,需要在 AndroidManifest.xml 中指定 Application 類。

(2)在MainActivity中調用初始化

需要注意的是要在setContentView之前初始化

package com.mly.panhouye.frescodemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.facebook.drawee.backends.pipeline.Fresco;public class MainActivity extends AppCompatActivity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Fresco.initialize(this);//需要在setContentView之前初始化    setContentView(R.layout.activity_main);  }}

第四步:layout中的xml布局文件

在布局之前需要在xml文件中加入命名空間

xmlns:fresco="http://schemas.android.com/apk/res-auto"

具體布局文件如下,本次演示通過按鈕點擊出發圖片加載,使用SimpleDraweeView(注意:layout_width/height不支持wrap_content):

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  xmlns:fresco="http://schemas.android.com/apk/res-auto"  android:id="@+id/activity_main"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="com.mly.panhouye.frescodemo.MainActivity">  <Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_below="@+id/my_image_view"    android:layout_centerHorizontal="true"    android:text="加載網絡圖片"    android:onClick="loadInternetImage"    android:layout_marginTop="12dp"    android:id="@+id/button" />  <com.facebook.drawee.view.SimpleDraweeView    android:id="@+id/my_image_view"    android:layout_width="400dp"    android:layout_height="400dp"    fresco:placeholderImage="@mipmap/ic_launcher"    android:layout_alignParentTop="true"    android:layout_centerHorizontal="true" /></RelativeLayout>

第五步:java實現代碼

package com.mly.panhouye.frescodemo;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import com.facebook.drawee.backends.pipeline.Fresco;import com.facebook.drawee.view.SimpleDraweeView;public class MainActivity extends AppCompatActivity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Fresco.initialize(this);//需要在setContentView之前初始化    setContentView(R.layout.activity_main);  }  //點擊事件加載網絡圖片代碼  public void loadInternetImage(View view){    Uri uri = Uri.parse("http://r.photo.store.qq.com/psb?/V12kkHqD1CWRD4/MeykWt0NXu0stiBFzf378D7ajKSDet6k1.Vaqmq2vps!/r/dKMAAAAAAAAA");    SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);    draweeView.setImageURI(uri);  }}

剩下的,Fresco會替你完成,比如:顯示占位圖直到加載完成;下載圖片;緩存圖片;圖片不再顯示時,從內存中移除等等等等。

 本文僅僅介紹了Fresco最基本的使用方法,大家伙可以訪問官網來嘗試其他功能實現。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 左权县| 弋阳县| 濮阳市| 内黄县| 如皋市| 含山县| 田阳县| 克东县| 鹤山市| 堆龙德庆县| 光泽县| 威信县| 岱山县| 英山县| 浮山县| 德安县| 建湖县| 大渡口区| 原平市| 阿合奇县| 安泽县| 台山市| 万全县| 谷城县| 库伦旗| 大渡口区| 青浦区| 西安市| 普兰县| 辉县市| 福贡县| 密云县| 新巴尔虎右旗| 南汇区| 调兵山市| 上饶县| 潮安县| 汕尾市| 彝良县| 桐城市| 大足县|