Fresco的简单应用

来源:互联网 发布:手机版淘宝类目的修改 编辑:程序博客网 时间:2024/05/20 09:44
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    xmlns:fresco="http://schemas.android.com/apk/res-auto"    android:orientation="vertical"    android:padding="20dp"    tools:context="com.bwie.fresco.MainActivity">    <com.facebook.drawee.view.SimpleDraweeView        android:id="@+id/sdv1"        android:layout_width="150dp"        android:layout_height="150dp"        fresco:placeholderImage="@mipmap/ic_launcher_round"/>    <com.facebook.drawee.view.SimpleDraweeView        android:id="@+id/sdv2"        android:layout_width="150dp"        android:layout_height="150dp"        android:layout_marginTop="100dp"        fresco:placeholderImage="@mipmap/ic_launcher_round"/></LinearLayout>
activity_gif.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.bwie.fresco.GifActivity">    <android.support.v7.widget.RecyclerView        android:id="@+id/rv"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>
item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:fresco="http://schemas.android.com/apk/res-auto"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="vertical">    <com.facebook.drawee.view.SimpleDraweeView        android:id="@+id/sdv"        fresco:viewAspectRatio="1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_margin="5dp"        fresco:placeholderImage="@mipmap/ic_launcher_round"/></LinearLayout>
加载图片的app
MyApp--去清单文件里面注册
public class MyApp extends Application {    @Override    public void onCreate() {        super.onCreate();        Fresco.initialize(this);    }}
加载图片的bean工具类
Image
public class Image {    public String urlGif;    public Image(String urlGif) {        this.urlGif = urlGif;    }    public Uri getUriGif(){        return Uri.parse(urlGif);    }}
MainActivity
public class MainActivity extends AppCompatActivity {    private SimpleDraweeView mSdv1;    private SimpleDraweeView mSdv2;    private DraweeController controller;    private DraweeController controllerWebp;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mSdv1 = findViewById(R.id.sdv1);        mSdv2 = findViewById(R.id.sdv2);        Uri uri = Uri.parse("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511780233036&di=" +                "2d0f0fa03ff8bf72b73ad46411f6435e&imgtype=0&src=http%3A%2F%2Fimage.kejixun.com%2F2016%2F1020%2F20161020052639586.jpg");//        Uri uri = Uri.parse("http://image.soogif.com/AffqqcX53mdvI3ipNxj735loE1PjmuyR.gif_s200x0");        controller = Fresco.newDraweeControllerBuilder()                .setUri(uri)                .setAutoPlayAnimations(true)                .build();        mSdv1.setController(controller);        Uri webpuri = Uri.parse("https://p.upyun.com/demo/webp/webp/animated-gif-0.webp");        controllerWebp = Fresco.newDraweeControllerBuilder()                .setUri(webpuri)                .setAutoPlayAnimations(true)                .build();        mSdv2.setController(controllerWebp);        mSdv2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent = new Intent(MainActivity.this, GifActivity.class);                startActivity(intent);            }        });    }}
GifActivity
public class GifActivity extends AppCompatActivity {    private RecyclerView mRv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_gif);        mRv = (RecyclerView) findViewById(R.id.rv);        GridLayoutManager manager = new GridLayoutManager(this,3);        mRv.setLayoutManager(manager);        mRv.setAdapter(new GifAdapter());    }}
GifAdapter
public class GifAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    List<Image> images = new ArrayList<>();    public GifAdapter() {        for (int i = 0; i < 10; i++) {            images.add(new Image("http://image.soogif.com/WO81V2zm6meci3kViBz8vtWdZt7ehldP.gif_s200x0"));            images.add(new Image("http://image.soogif.com/cSJysItqn9BLIcsb2DpiGiEQZctsF2iG.gif_s200x0"));            images.add(new Image("http://image.soogif.com/AffqqcX53mdvI3ipNxj735loE1PjmuyR.gif_s200x0"));        }    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, null);        return new MyViewHolder(view);    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        Image image = images.get(position);        MyViewHolder holder1 = (MyViewHolder) holder;        DraweeController controller = Fresco.newDraweeControllerBuilder()                .setUri(image.getUriGif())                .setAutoPlayAnimations(true)                .build();        holder1.sdv.setController(controller);    }    @Override    public int getItemCount() {        return images == null ? 0:images.size();    }    class MyViewHolder extends RecyclerView.ViewHolder{        private SimpleDraweeView sdv;        public MyViewHolder(View itemView) {            super(itemView);            sdv = itemView.findViewById(R.id.sdv);        }    }}
用到的依赖包
compile 'com.facebook.fresco:fresco:0.11.0'compile 'com.facebook.fresco:animated-gif:0.12.0'compile 'com.facebook.fresco:animated-webp:0.12.0'compile 'com.facebook.fresco:webpsupport:0.12.0'compile 'com.android.support:recyclerview-v7:26.1.0'
原创粉丝点击