- 首先把網路、SD卡的讀寫許可權新增上:<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
- <span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span></span><pre name="code" class="html"><span style="white-space:pre"> </span><uses-permission android:name="android.permission.INTERNET">
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
- </pre><pre name="code" class="java">新增依賴,好像版本太高不支援GIF型別的動態圖????
- <span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span>compile 'com.facebook.fresco:fresco:0.9.0'</span>
- private SimpleDraweeView simple;//控制元件
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- //Fresco庫的初始化,要先初始化庫,才能完成佈局檔案的載入
- Fresco.initialize(this);//初始化框架
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
1、載入網路圖片,在SimpleDraweeView控制元件顯示
- String url = "http://img4.imgtn.bdimg.com/it/u=1738110171,2299636339&fm=21&gp=0.jpg";//正確網址
- Uri uri = Uri.parse("http://img4.imgtn.bdimg.com");//錯誤的地址
- //找出控制元件
- simple = (SimpleDraweeView) findViewById(R.id.simpledraweeview);
- simple.setImageURI(uri);//開始下載
- //重試,建立DraweeController物件
- DraweeController controller = Fresco.newDraweeControllerBuilder()
- .setUri(url)//URL地址
- .setTapToRetryEnabled(true)//開啟點選重試
- .build();//構建
- simple.setController(controller);
SD卡的根目錄:
- private String str = Environment.getExternalStorageDirectory().getAbsolutePath();
- </pre><pre name="code" class="java">
2、載入SD卡上面的圖片,注意格式:
- <span style="white-space:pre"> </span>file:///。。。。。,字串形式
- String uri= "file:///storage/emulated/0/DCIM/Camera/IMG_20160227_133717_904.jpg";
- <span style="white-space:pre"> </span>DraweeController controller = Fresco.newDraweeControllerBuilder()
- .setUri(uri)
- .setTapToRetryEnabled(true)
- .build();
- simple.setController(controller);<pre name="code" class="java">Uri uri=Uri.parse("asset:///aa.gif");
- DraweeController controller=Fresco.newDraweeControllerBuilder()
- .setUri(uri)
- .setAutoPlayAnimations(true)
- .build();
- simple.setController(controller);
3、載入res目錄下的資原始檔(圖片)
注意格式:
- Uri uri = Uri.parse("res:///" + R.mipmap.bb113);
- DraweeController controller = Fresco.newDraweeControllerBuilder()
- .setUri(uri)
- .setTapToRetryEnabled(true)
- .build();
- simple.setController(controller);
4、載入assets資料夾下的動態圖片(gif格式),也可以改為網路地址
注意格式:asset:///
- </pre><p></p><p><span style="font-family:宋體; color:#808080"><span style="font-size:18px"><em></em></span></span></p><pre name="code" class="java"><span style="white-space:pre"> </span>Uri uri=Uri.parse("asset:///aa.gif");
- DraweeController controller=Fresco.newDraweeControllerBuilder()
- .setUri(uri)
- .setAutoPlayAnimations(true)
- .build();
- simple.setController(controller);
- rap_content
- Drawees 不支援 wrap_content 屬性。
- 所下載的影象可能和佔點陣圖尺寸不一致,如果設定出錯圖或者重試圖的話,這些圖的尺寸也可能和所下載的圖尺寸不一致。
- 如果大小不一致,假設使用的是 wrap_content,影象下載完之後,View將會重新layout,改變大小和位置。這將會導致介面跳躍。
- 固定寬高比
- 只有希望顯示固定的寬高比時,可以使用wrap_content。
- 如果希望圖片以特定的寬高比例顯示,例如 4:3,可以在XML中指定:
- <com.facebook.drawee.view.SimpleDraweeView
- android:id="@+id/my_image_view"
- android:layout_width="20dp"
- android:layout_height="wrap_content"
- fresco:viewAspectRatio="1.33"
- <!-- other attributes -->
- 也可以在程式碼中指定顯示比例:
- mSimpleDraweeView.setAspectRatio(1.33f);
XML檔案:
- <com.facebook.drawee.view.SimpleDraweeView
- android:id="@+id/my_image_view"
- android:layout_width="20dp"
- android:layout_height="20dp"
- fresco:fadeDuration="300"//圖片淡出的事件(ms)
- fresco:actualImageScaleType="focusCrop"
- fresco:placeholderImage="@color/wait_color"//佔點陣圖
- fresco:placeholderImageScaleType="fitCenter"//佔點陣圖的縮放型別
- fresco:failureImage="@drawable/error"//失敗圖片
- fresco:failureImageScaleType="centerInside"//失敗圖片的型別
- fresco:retryImage="@drawable/retrying"//重試圖片
- fresco:retryImageScaleType="centerCrop"//圖的重試縮放型別
- fresco:progressBarImage="@drawable/progress_bar"//進度圖片
- fresco:progressBarImageScaleType="centerInside"//進度圖的縮放型別
- fresco:progressBarAutoRotateInterval="1000"//進度圖自動旋轉的間隔時間(ms)
- fresco:backgroundImage="@color/blue"//背景圖片
- fresco:overlayImage="@drawable/watermark"//疊加圖片
- fresco:pressedStateOverlayImage="@color/red"//按壓狀態下顯示的疊加圖
- fresco:roundAsCircle="false"//是否設定為圓形圖片
- fresco:roundedCornerRadius="1dp"//圓角半徑
- fresco:roundTopLeft="true"//左上角是否為圓角
- fresco:roundTopRight="false"//右上角是否為圓角
- fresco:roundBottomLeft="false"//左下角是否為圓角
- fresco:roundBottomRight="true"//右下角是否為圓角
- fresco:roundWithOverlayColor="@color/corner_color"//圓形或者圓角圖片底下的疊加顏色
- fresco:roundingBorderWidth="2dp"//圓形或者圓角圖片邊框的寬度
- fresco:roundingBorderColor="@color/border_color"//圓形或者圓角邊框的顏色
- />
- 縮放型別—ScaleType:
- 型別 描述
- center 居中,無縮放
- centerCrop 保持寬高比縮小或放大,使得兩邊都大於或等於顯示邊界。居中顯示。
- focusCrop 同centerCrop, 但居中點不是中點,而是指定的某個點
- centerInside 使兩邊都在顯示邊界內,居中顯示。如果圖尺寸大於顯示邊界,則保持長寬比縮小圖片。
- fitCenter 保持寬高比,縮小或者放大,使得圖片完全顯示在顯示邊界內。居中顯示
- fitStart 同上。但不居中,和顯示邊界左上對齊
- fitEnd 同fitCenter, 但不居中,和顯示邊界右下對齊
- fitXY 不儲存寬高比,填充滿顯示邊界
- none 如要使用tile mode顯示, 需要設定為none
- 推薦使用:focusCrop 型別