Fresco加载图片详解

来源:互联网 发布:淘宝助理上传很慢 编辑:程序博客网 时间:2024/06/05 11:28

添加依赖

//只实现图片加载
compile ‘com.facebook.fresco:fresco:0.12.0’

dependencies {  // 在 API < 14 上的机器支持 WebP 时,需要添加  compile 'com.facebook.fresco:animated-base-support:0.12.0'  // 支持 GIF 动图,需要添加  compile 'com.facebook.fresco:animated-gif:0.12.0'  // 支持 WebP (静态图+动图),需要添加  compile 'com.facebook.fresco:animated-webp:0.12.0'  compile 'com.facebook.fresco:webpsupport:0.12.0'  // 仅支持 WebP 静态图,需要添加  compile 'com.facebook.fresco:webpsupport:0.12.0'}

开始使用 Fresco

如果你仅仅是想简单下载一张网络图片,在下载完成之前,显示一张占位图,那么简单使用 SimpleDraweeView 即可。

在加载图片之前,你必须初始化Fresco类。你只需要调用Fresco.initialize一次即可完成初始化,在 Application 里面做这件事再适合不过了(如下面的代码),注意多次的调用初始化是无意义的。

在application初始化

public class MyApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        Fresco.initialize(this);    }}

做完上面的工作后,你需要在 AndroidManifest.xml 中指定你的 Application 类。为了下载网络图片,请确认你声明了网络请求的权限。

 <manifest    ...    >    <uses-permission android:name="android.permission.INTERNET" />    <application      ...      android:label="@string/app_name"      android:name=".MyApplication"      >      ...    </application>    ...  </manifest>

XML

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:fresco="http://schemas.android.com/apk/res-auto"    android:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="test.bwie.com.am20171102.MainActivity">    <com.facebook.drawee.view.SimpleDraweeView        android:id="@+id/my_image_view"        android:layout_width="match_parent"        android:layout_height="300dp"        android:layout_centerInParent="true"       fresco:placeholderImage="@mipmap/icon_placeholder"        fresco:placeholderImageScaleType="fitCenter"      fresco:progressBarImage="@mipmap/icon_progress_bar"        fresco:progressBarImageScaleType="centerInside"        fresco:progressBarAutoRotateInterval="5000"        fresco:failureImage="@mipmap/icon_failure"        fresco:failureImageScaleType="centerInside"        fresco:retryImage="@mipmap/icon_retry"        fresco:retryImageScaleType="centerInside"        fresco:fadeDuration="5000"        fresco:roundAsCircle="true"        fresco:roundedCornerRadius="30dp"        ></com.facebook.drawee.view.SimpleDraweeView></RelativeLayout>

placeholderImage
//下载时的默认图片
ScaleType
//图片的加载样式
progressBarImage
//加载中的进度
failureImage
//加载失败显示的图片
retryImage
//失败后点击重试的图片
fadeDuration
//加载进度的时间
fresco:roundAsCircle=”true”
//圆形图片
fresco:roundedCornerRadius=”30dp”
//圆角图片默认4个角可以设置单个

XML就设置这么多注意高度不可以用wrap_content必须给固定的值


MainActivity中

public class MainActivity extends AppCompatActivity {private SimpleDraweeView simpleDraweeView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        //创建SimpleDraweeView对象        simpleDraweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);        //创建将要下载的图片的URI        Uri imageUri = Uri.parse("http://img4q.duitang.com/uploads/item/201502/28/20150228233429_caQnR.gif");        //开始下载        simpleDraweeView.setImageURI(imageUri);        //创建DraweeController        DraweeController controller = Fresco.newDraweeControllerBuilder()                //加载的图片URI地址                .setUri(imageUri)                //设置点击重试是否开启                .setTapToRetryEnabled(true)                //设置GIF动图可用                .setAutoPlayAnimations(true)                //设置旧的Controller                .setOldController(simpleDraweeView.getController())                //构建                .build();        //设置DraweeController        simpleDraweeView.setController(controller);    }}
原创粉丝点击