Fresco的简单实用
来源:互联网 发布:雅居乐找软件测试 编辑:程序博客网 时间:2024/06/05 18:12
依赖
//使用+代表依赖库的最新版本 //Fresco compile 'com.facebook.fresco:fresco:+' //支持GIF compile 'com.facebook.fresco:animated-gif:+'
MainActivity.java
package com.example.fresco;import android.graphics.drawable.Animatable;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.facebook.drawee.backends.pipeline.Fresco;import com.facebook.drawee.controller.AbstractDraweeController;import com.facebook.drawee.controller.BaseControllerListener;import com.facebook.drawee.view.SimpleDraweeView;import com.facebook.imagepipeline.image.ImageInfo;import com.facebook.imagepipeline.request.ImageRequest;import com.facebook.imagepipeline.request.ImageRequestBuilder;public class MainActivity extends AppCompatActivity { public String mImageUrl="http://imgstore.cdn.sogou.com/app/a/100540002/661782.jpg"; public String mErrorUrl="http://imgstore.cdn.sogou.com/app/a/100542/661782.jpg"; public String mGifUrl="http://p0.ifengimg.com/pmop/2017/0729/FE0633609A001942214FB696CB2EFA2C2FF30E2B_size413_w500_h226.gif"; public String mJpegUrl="http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=041e9e287acf3bc7fc0dc5afb969d0d4/9e3df8dcd100baa1ae06259e4d10b912c8fc2ee8.jpg"; private SimpleDraweeView sdv; private Button btn; private int LKH=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //需要初始化Fresco Fresco.initialize(this); setContentView(R.layout.activity_main); //获取控件 sdv = (SimpleDraweeView) findViewById(R.id.sdv); btn = (Button) findViewById(R.id.btn); //得到URI Uri uri = Uri.parse(mGifUrl); //设置图片地址 sdv.setImageURI(uri);//// // 在java代码中设置view的一些xml属性 失败、重试// GenericDraweeHierarchy draweeHierarchy = new GenericDraweeHierarchyBuilder(getResources())// .setFailureImage(ContextCompat.getDrawable(this, R.drawable.icon_failure))// .build();//// sdv.setHierarchy(draweeHierarchy); //也可以控制图片请求的一些特性 ImageRequest build = ImageRequestBuilder.newBuilderWithSource(uri) //射中支持JPEG的渐进展示(从模糊到清晰) .setProgressiveRenderingEnabled(true) .build(); //控制图片加载的一些特性 AbstractDraweeController controller = Fresco.newDraweeControllerBuilder() .setImageRequest(build) .setUri(uri) //设置可重新设置(4次) // .setTapToRetryEnabled(true) //设置自动播放 // .setAutoPlayAnimations(true) //设置监听图片加载 .setControllerListener(new BaseControllerListener<ImageInfo>(){ @Override public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) { } @Override public void onFailure(String id, Throwable throwable) { Toast.makeText(MainActivity.this,"失败",Toast.LENGTH_SHORT).show(); } }) .build(); sdv.setController(controller); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Animatable animatable = sdv.getController().getAnimatable(); if (LKH%2==0){ LKH++; animatable.start(); }else { LKH++; animatable.stop(); } } }); }}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:orientation="vertical"> <!--fresco:viewAspectRatio="1.5" 设置宽高比--> <!--fresco:failureImage="@drawable/icon_failure" 网络加载失败图片--> <!--fresco:progressBarImage="@drawable/icon_progress_bar" 网络缓慢过度图片--> <!--fresco:progressBarAutoRotateInterval="3000" 旋转--> <!--fresco:roundedCornerRadius="30dp" 设置弧度--> <!--fresco:roundTopLeft="false" 设置是否有弧度--> <!--fresco:roundAsCircle="true" 设置圆边框--> <!--fresco:roundingBorderWidth="20dp" 设置边框宽度--> <!--fresco:roundingBorderColor="#00f" 设置边框颜色--> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/sdv" android:layout_gravity="center" android:layout_width="400dp" android:layout_height="wrap_content" fresco:viewAspectRatio="1.5" fresco:failureImage="@drawable/icon_failure" fresco:progressBarImage="@drawable/icon_progress_bar" fresco:progressBarAutoRotateInterval="3000" fresco:fadeDuration="5000" fresco:retryImage="@drawable/icon_retry" fresco:roundedCornerRadius="30dp" fresco:roundTopLeft="false" fresco:roundBottomRight="false" fresco:roundAsCircle="true" fresco:roundingBorderWidth="20dp" fresco:roundingBorderColor="#00f" /> <!--<com.facebook.drawee.view.SimpleDraweeView--> <!--android:id="@+id/sdv"--> <!--android:layout_gravity="center"--> <!--android:layout_width="400dp"--> <!--android:layout_height="wrap_content"--> <!--fresco:viewAspectRatio="1.5"--> <!--/>--> <Button android:id="@+id/btn" android:layout_gravity="center" android:background="#ffab77" android:layout_width="300dp" android:layout_height="60dp" android:textColor="#fff" android:text="点击"/></LinearLayout>
阅读全文