Fresco图片与高斯模糊和动图展示

效果:
在这里插入图片描述

//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;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43117800/article/details/85254636