- 首先把网络、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.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 controller = Fresco.newDraweeControllerBuilder()
- .setUri(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"
-
- 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"
-
- 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 类型
本文转自 一点点征服 博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/6645185.html
,如需转载请自行联系原作者