Fresco框架SimpleDraweeView控制元件的簡單使用

weixin_34162629發表於2017-03-30
  1. 首先把網路、SD卡的讀寫許可權新增上:<span style="font-family: Arial, Helvetica, sans-serif;">   </span>  
  1. <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">  
  2.     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">  
  3.         <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">  

 

  1. </pre><pre name="code" class="java">新增依賴,好像版本太高不支援GIF型別的動態圖????  
  1. <span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">         </span>compile 'com.facebook.fresco:fresco:0.9.0'</span>  

 

  1. private SimpleDraweeView simple;//控制元件  


  1. @Override  
  2.   protected void onCreate(Bundle savedInstanceState) {  
  3.       //Fresco庫的初始化,要先初始化庫,才能完成佈局檔案的載入  
  4.       Fresco.initialize(this);//初始化框架  
  5.       super.onCreate(savedInstanceState);  
  6.       setContentView(R.layout.activity_main);  


        1、載入網路圖片,在SimpleDraweeView控制元件顯示

  1. String url = "http://img4.imgtn.bdimg.com/it/u=1738110171,2299636339&fm=21&gp=0.jpg";//正確網址  
  2.   
  3. Uri uri = Uri.parse("http://img4.imgtn.bdimg.com");//錯誤的地址  
  4. //找出控制元件  
  5. simple = (SimpleDraweeView) findViewById(R.id.simpledraweeview);  
  1. simple.setImageURI(uri);//開始下載  
  2.   
  3. //重試,建立DraweeController物件  
  4. DraweeController controller = Fresco.newDraweeControllerBuilder()  
  5.         .setUri(url)//URL地址  
  6.         .setTapToRetryEnabled(true)//開啟點選重試  
  7.         .build();//構建  
  8.   
  9. simple.setController(controller);  


SD卡的根目錄:

  1. private String str = Environment.getExternalStorageDirectory().getAbsolutePath();  
  1. </pre><pre name="code" class="java">  

2、載入SD卡上面的圖片,注意格式:

  1. <span style="white-space:pre">        </span>file:///。。。。。,字串形式  
  1. String uri= "file:///storage/emulated/0/DCIM/Camera/IMG_20160227_133717_904.jpg";  
  1. <span style="white-space:pre">    </span>DraweeController controller = Fresco.newDraweeControllerBuilder()  
  2.                .setUri(uri)  
  3.                .setTapToRetryEnabled(true)  
  4.                .build();  
  5.   
  6.        simple.setController(controller);<pre name="code" class="java">Uri uri=Uri.parse("asset:///aa.gif");   
  7.   
  8. DraweeController controller=Fresco.newDraweeControllerBuilder()  
  9.                .setUri(uri)  
  10.                .setAutoPlayAnimations(true)  
  11.                .build();  
  12.   
  13.        simple.setController(controller);  


3、載入res目錄下的資原始檔(圖片)

注意格式:

  1. Uri uri = Uri.parse("res:///" + R.mipmap.bb113);  
  2.        DraweeController controller = Fresco.newDraweeControllerBuilder()  
  3.                .setUri(uri)  
  4.                .setTapToRetryEnabled(true)  
  5.                .build();  
  6.   
  7.        simple.setController(controller);  



4、載入assets資料夾下的動態圖片(gif格式),也可以改為網路地址

注意格式:asset:///


 

  1. </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");  


  1. DraweeController controller=Fresco.newDraweeControllerBuilder()  
  2.         .setUri(uri)  
  3.         .setAutoPlayAnimations(true)  
  4.         .build();  
  5.   
  6. simple.setController(controller);  



 

  1. rap_content  
  2. Drawees 不支援 wrap_content 屬性。  
  3.   
  4. 所下載的影象可能和佔點陣圖尺寸不一致,如果設定出錯圖或者重試圖的話,這些圖的尺寸也可能和所下載的圖尺寸不一致。  
  5.   
  6. 如果大小不一致,假設使用的是 wrap_content,影象下載完之後,View將會重新layout,改變大小和位置。這將會導致介面跳躍。  
  7.   
  8. 固定寬高比  
  9. 只有希望顯示固定的寬高比時,可以使用wrap_content。  
  10.   
  11. 如果希望圖片以特定的寬高比例顯示,例如 4:3,可以在XML中指定:  
  12.   
  13. <com.facebook.drawee.view.SimpleDraweeView  
  14.     android:id="@+id/my_image_view"  
  15.     android:layout_width="20dp"  
  16.     android:layout_height="wrap_content"  
  17.     fresco:viewAspectRatio="1.33"  
  18.     <!-- other attributes -->  
  19. 也可以在程式碼中指定顯示比例:  
  20.   
  21. mSimpleDraweeView.setAspectRatio(1.33f);  




XML檔案:

  1. <com.facebook.drawee.view.SimpleDraweeView  
  2.   
  3.     android:id="@+id/my_image_view"  
  4.     android:layout_width="20dp"  
  5.     android:layout_height="20dp"  
  6.   
  7.     fresco:fadeDuration="300"//圖片淡出的事件(ms)  
  8.   
  9.     fresco:actualImageScaleType="focusCrop"  
  10.   
  11.     fresco:placeholderImage="@color/wait_color"//佔點陣圖  
  12.   
  13.     fresco:placeholderImageScaleType="fitCenter"//佔點陣圖的縮放型別  
  14.   
  15.     fresco:failureImage="@drawable/error"//失敗圖片  
  16.   
  17.     fresco:failureImageScaleType="centerInside"//失敗圖片的型別  
  18.   
  19.     fresco:retryImage="@drawable/retrying"//重試圖片  
  20.   
  21.     fresco:retryImageScaleType="centerCrop"//圖的重試縮放型別  
  22.   
  23.     fresco:progressBarImage="@drawable/progress_bar"//進度圖片  
  24.   
  25.     fresco:progressBarImageScaleType="centerInside"//進度圖的縮放型別  
  26.   
  27.     fresco:progressBarAutoRotateInterval="1000"//進度圖自動旋轉的間隔時間(ms)  
  28.   
  29.     fresco:backgroundImage="@color/blue"//背景圖片  
  30.   
  31.     fresco:overlayImage="@drawable/watermark"//疊加圖片  
  32.   
  33.     fresco:pressedStateOverlayImage="@color/red"//按壓狀態下顯示的疊加圖  
  34.   
  35.     fresco:roundAsCircle="false"//是否設定為圓形圖片  
  36.   
  37.     fresco:roundedCornerRadius="1dp"//圓角半徑  
  38.   
  39.     fresco:roundTopLeft="true"//左上角是否為圓角  
  40.   
  41.     fresco:roundTopRight="false"//右上角是否為圓角  
  42.   
  43.     fresco:roundBottomLeft="false"//左下角是否為圓角  
  44.   
  45.     fresco:roundBottomRight="true"//右下角是否為圓角  
  46.   
  47.     fresco:roundWithOverlayColor="@color/corner_color"//圓形或者圓角圖片底下的疊加顏色  
  48.   
  49.     fresco:roundingBorderWidth="2dp"//圓形或者圓角圖片邊框的寬度  
  50.   
  51.     fresco:roundingBorderColor="@color/border_color"//圓形或者圓角邊框的顏色  
  52.   />  



    1. 縮放型別—ScaleType:  
    2.   
    3. 型別  描述  
    4. center  居中,無縮放  
    5.   
    6. centerCrop  保持寬高比縮小或放大,使得兩邊都大於或等於顯示邊界。居中顯示。  
    7.   
    8. focusCrop   同centerCrop, 但居中點不是中點,而是指定的某個點  
    9.   
    10. centerInside    使兩邊都在顯示邊界內,居中顯示。如果圖尺寸大於顯示邊界,則保持長寬比縮小圖片。  
    11.   
    12. fitCenter   保持寬高比,縮小或者放大,使得圖片完全顯示在顯示邊界內。居中顯示  
    13.   
    14. fitStart    同上。但不居中,和顯示邊界左上對齊  
    15.   
    16. fitEnd  同fitCenter, 但不居中,和顯示邊界右下對齊  
    17.   
    18. fitXY   不儲存寬高比,填充滿顯示邊界  
    19.   
    20. none    如要使用tile mode顯示, 需要設定為none  
    21.   
    22. 推薦使用:focusCrop 型別 

相關文章