Fresco 加载 渐进式图片的简单使用
GItHub 地址:https://www.fresco-cn.org/docs/index.html
先上图
首先先添加依赖
//静态图的依赖 implementation 'com.facebook.fresco:fresco:0.12.0' // 支持 GIF 动图,需要添加 compile 'com.facebook.fresco:animated-gif:0.12.0' implementation 'com.android.support:support-v4:27.1.1'
XML 文件
<com.facebook.drawee.view.SimpleDraweeView android:layout_width="400dp" android:layout_height="300dp" android:id="@+id/sdv" fresco:placeholderImage="@drawable/holder" fresco:failureImage="@drawable/err" fresco:retryImage="@drawable/res" fresco:roundAsCircle="true" />
placeholderImage 是等待加载时的图片
failureImage 是加载失败时的图片 (网络异常情况下)
retryImage 是重新加载时显示的图片
**
强制性的宽高
你必须声明 android:layout_width
和 android:layout_height
。如果没有在XML中声明这两个属性,将无法正确加载图像。
wrap_content
Drawees 不支持 wrap_content
属性。
初始化Fresco
public class Myapp extends Application { @Override public void onCreate() { super.onCreate(); //初始化Fresco Fresco.initialize(this); } }
清单文件中 加上权限和 注册App
android:name=".Myapp"
最后是 java代码
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.controller.AbstractDraweeController; import com.facebook.drawee.view.SimpleDraweeView; public class MainActivity extends AppCompatActivity { private SimpleDraweeView sdv; //gif private String URL_="https://img3.duitang.com/uploads/item/201605/14/20160514165650_RHr3n.gif"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); AbstractDraweeController controller = Fresco.newDraweeControllerBuilder() //图片地址 .setUri(URL_) //播放gif 图片 .setAutoPlayAnimations(true) //点击重新加载时 可以重新加载4 次 .setTapToRetryEnabled(true) .build(); sdv.setController(controller); } private void initView() { sdv = (SimpleDraweeView) findViewById(R.id.sdv); } }