Fresco框架SimpleDraweeView控件的简单使用

本文详细介绍了如何在Fresco框架下使用SimpleDraweeView控件,包括资源和资产的引用方式,以及XML文件中的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	首先把网络、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目录下的资源文件(图片)

注意格式: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 类型


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值