效果:
//1:build.gradle中加入fresco依赖
分别是fresco图片动图静态展示得依赖
implementation 'com.facebook.fresco:fresco:0.14.1' implementation 'com.facebook.fresco:animated-gif:0.14.1' implementation 'com.facebook.fresco:webpsupport:0.14.1'
//2:AndroidManifest.xml加入网络权限和全局初始化
<uses-permission android:name="android.permission.INTERNET" />
android:name=".App"
//3:创建一个Application类
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
//4:布局文件使用SimpleDraweeView控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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"
tools:context=".MainActivity"
android:orientation="vertical">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv_image1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
fresco:placeholderImage="@drawable/mkj"/>
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv_image2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
fresco:placeholderImage="@drawable/mkj"/>
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv_image3"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
fresco:placeholderImage="@drawable/mkj"/>
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv_image4"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:layout_gravity="center"
fresco:placeholderImage="@drawable/mkj"/>
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv_image5"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:layout_gravity="center"
fresco:placeholderImage="@drawable/mkj"/>
<Button
android:id="@+id/btn_gif"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="动图加载"/>
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv_image6"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:layout_gravity="center" />
</LinearLayout>
//5:代码模块
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Uri uri;
private SimpleDraweeView sdv_image1;
private SimpleDraweeView sdv_image2;
private SimpleDraweeView sdv_image3;
private SimpleDraweeView sdv_image4;
private SimpleDraweeView sdv_image5;
private SimpleDraweeView sdv_image6;
private RoundingParams roundingParams1;
private GenericDraweeHierarchyBuilder builder;
private RoundingParams roundingParams;
private Button btn_gif;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//fresco各种展示
initData();
//高斯模糊
showUrlBlur(sdv_image5, "http://img4q.duitang.com/uploads/item/201304/27/20130427043538_wAfHC.jpeg", 10, 10);
}
private void initData() {
uri = Uri.parse("http://img4q.duitang.com/uploads/item/201304/27/20130427043538_wAfHC.jpeg");
//创建builder对象
builder = new GenericDraweeHierarchyBuilder(getResources());
//加载正常得网络图片
sdv_image1.setImageURI(uri);
//加载圆形图片
roundingParams = RoundingParams.asCircle();
GenericDraweeHierarchy hierarchy = builder.setRoundingParams(roundingParams).build();
sdv_image2.setHierarchy(hierarchy);
sdv_image2.setImageURI(uri);
//加载圆角图片
roundingParams1 = RoundingParams.fromCornersRadius(30f);
GenericDraweeHierarchy hierarchy1 = builder.setRoundingParams(roundingParams1).build();
sdv_image3.setHierarchy(hierarchy1);
sdv_image3.setImageURI(uri);
//左右下角圆角展示
RoundingParams roundingParams2 = RoundingParams.fromCornersRadii(0f, 0f, 30f, 30f);
GenericDraweeHierarchy hierarchy2 = builder.setRoundingParams(roundingParams2).build();
sdv_image4.setHierarchy(hierarchy2);
sdv_image4.setImageURI(uri);
}
/**
* 以高斯模糊显示。
*
* @param sdv_image5 View。
* @param url url.
* @param iterations 迭代次数,越大越魔化。
* @param blurRadius 模糊图半径,必须大于0,越大越模糊。
*/
public static void showUrlBlur(SimpleDraweeView sdv_image5, String url, int iterations, int blurRadius) {
try {
Uri uri = Uri.parse(url);
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setPostprocessor(new IterativeBoxBlurPostProcessor(iterations, blurRadius))
.build();
AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(sdv_image5.getController())
.setImageRequest(request)
.build();
sdv_image5.setController(controller);
} catch (Exception e) {
e.printStackTrace();
}
}
private void initView() {
sdv_image1 = (SimpleDraweeView) findViewById(R.id.sdv_image1);
sdv_image2 = (SimpleDraweeView) findViewById(R.id.sdv_image2);
sdv_image3 = (SimpleDraweeView) findViewById(R.id.sdv_image3);
sdv_image4 = (SimpleDraweeView) findViewById(R.id.sdv_image4);
sdv_image5 = (SimpleDraweeView) findViewById(R.id.sdv_image5);
sdv_image6 = (SimpleDraweeView) findViewById(R.id.sdv_image6);
btn_gif = (Button) findViewById(R.id.btn_gif);
btn_gif.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_gif://动图展示
Uri path = Uri.parse("http://b-ssl.duitang.com/uploads/item/201601/28/20160128143652_dQNre.gif");
AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(path)
.setAutoPlayAnimations(true)//是否自动播放动画,false不播放
.setOldController(sdv_image6.getController())//内存优化
.build();
sdv_image6.setController(controller);
break;
}
}
}