Fresco框架SimpleDraweeView控件的簡單使用


[java] view plain copy
  1. 首先把網絡、SD卡的讀寫權限添加上:<span style="font-family: Arial, Helvetica, sans-serif;">   </span>  
[java] view plain copy
  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">  

 

[java] view plain copy
  1. </pre><pre name="code" class="java">添加依賴,好像版本太高不支持GIF類型的動態圖????  
[java] view plain copy
  1. <span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">         </span>compile 'com.facebook.fresco:fresco:0.9.0'</span>  

 

[java] view plain copy
  1. private SimpleDraweeView simple;//控件  


[java] view plain copy
  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控件顯示

[java] view plain copy
  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);  
[java] view plain copy
  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卡的根目錄:

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

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

[java] view plain copy
  1. <span style="white-space:pre">        </span>file:///。。。。。,字符串形式  
[java] view plain copy
  1. String uri= "file:///storage/emulated/0/DCIM/Camera/IMG_20160227_133717_904.jpg";  
[java] view plain copy
  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目錄下的資源文件(圖片)

注意格式:

[java] view plain copy
  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:///


 

[java] view plain copy
  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");  


[java] view plain copy
  1. DraweeController controller=Fresco.newDraweeControllerBuilder()  
  2.         .setUri(uri)  
  3.         .setAutoPlayAnimations(true)  
  4.         .build();  
  5.   
  6. simple.setController(controller);  



 

[java] view plain copy
  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文件:

[java] view plain copy
  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.   />  



[java] view plain copy
    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 類型 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM