Fresco加载图片_weixin_43668889的博客-程序员秘密

技术标签: 加载图片  动图  Fresco  

1.MainActivity

package com.example.frescodemo;

import android.Manifest;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.controller.AbstractDraweeController;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.postprocessors.IterativeBoxBlurPostProcessor;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;

public class MainActivity extends AppCompatActivity {

    private SimpleDraweeView simpleDraweeView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        simpleDraweeView = findViewById(R.id.image);
        SimpleDraweeView one = findViewById(R.id.one);
        SimpleDraweeView two= findViewById(R.id.two);
        SimpleDraweeView three= findViewById(R.id.three);
        SimpleDraweeView four = findViewById(R.id.four);
        if (ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.READ_EXTERNAL_STORAGE}, 100);
        }
        showUrlBlur(simpleDraweeView,
                "https://img4q.duitang.com/uploads/item/201304/27/20130427043538_wAfHC.jpeg",
                1,
                10);
        //加载gif
        DraweeController draweeController = Fresco.newDraweeControllerBuilder()
                //加载assests包下的gif
                .setUri(Uri.parse("asset:///aa.gif"))
                .setAutoPlayAnimations(true)
                .build();
        one.setController(draweeController);

        //one.setImageURI(Uri.parse("https://img4q.duitang.com/uploads/item/201304/27/20130427043538_wAfHC.jpeg"));
        //加载drawable包下的图片
        two.setImageURI("res:///"+R.drawable.f);
        three.setImageURI(Uri.parse("https://img4q.duitang.com/uploads/item/201304/27/20130427043538_wAfHC.jpeg"));
        four.setImageURI(Uri.parse("https://img4q.duitang.com/uploads/item/201304/27/20130427043538_wAfHC.jpeg"));

    }
//高斯模糊
    public static void showUrlBlur(SimpleDraweeView draweeView, String url, int iterations, int blurRadius) {
        try {
            Uri uri = Uri.parse(url);//图片url
            ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
                    .setPostprocessor(new IterativeBoxBlurPostProcessor(iterations, blurRadius))
                    .build();
            AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
                    .setOldController(draweeView.getController())
                    .setImageRequest(request)
                    .build();
            draweeView.setController(controller);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2.xml页面

<?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"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/one"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:minHeight="50dp"
    android:layout_margin="10dp"
    app:fadeDuration="1000"/>
  <com.facebook.drawee.view.SimpleDraweeView
      android:id="@+id/two"
      app:roundAsCircle="true"
      android:layout_width="100dp"
      android:layout_height="wrap_content"
      android:adjustViewBounds="true"
      android:minHeight="50dp"
      android:layout_margin="10dp"
      app:fadeDuration="1000"/>
  <com.facebook.drawee.view.SimpleDraweeView
      android:layout_width="100dp"
      android:layout_height="wrap_content"
      android:id="@+id/image"
      android:minHeight="50dp"
      android:adjustViewBounds="true"
      app:roundedCornerRadius="20dp"
      app:roundAsCircle="true"
      app:roundingBorderWidth="5dp"
      app:roundingBorderColor="#ff0"/>
  <com.facebook.drawee.view.SimpleDraweeView
      android:id="@+id/three"
      android:layout_width="100dp"
      android:layout_height="wrap_content"
      android:adjustViewBounds="true"
      android:minHeight="50dp"
      android:layout_margin="10dp"
      app:fadeDuration="1000"
      app:roundedCornerRadius="5dp"
      app:roundTopLeft="true"
      app:roundTopRight="true"
      app:roundBottomLeft="true"
      app:roundBottomRight="true"/>
  <com.facebook.drawee.view.SimpleDraweeView
      android:id="@+id/four"
      android:layout_width="100dp"
      android:layout_height="wrap_content"
      android:adjustViewBounds="true"
      android:minHeight="50dp"
      android:layout_margin="10dp"
      app:fadeDuration="1000"
      app:roundedCornerRadius="5dp"
      app:roundTopLeft="false"
      app:roundTopRight="false"
      app:roundBottomLeft="true"
      app:roundBottomRight="true"/>

</LinearLayout>
<!--fresco:actualImageScaleType="focusCrop"           //加载得到的图片的缩放类型-->
    <!--fresco:fadeDuration="1000"                          -->
    <!--fresco:failureImage="@drawable/imgbg"               //加载失败之后显示的图片-->
    <!--fresco:failureImageScaleType="centerInside"         //图片缩放类型-->
    <!--fresco:placeholderImage="@drawable/imgbg"           //占位图片(未加载之前显示的图片)-->
    <!--fresco:placeholderImageScaleType="fitCenter"    -->
    <!--fresco:progressBarAutoRotateInterval="1000"         //加载进度条图片旋转周期-->
    <!--fresco:progressBarImage="@drawable/progress_bar"    //加载进度条图片-->
    <!--fresco:progressBarImageScaleType="centerInside"-->
    <!--fresco:retryImage="@mipmap/ic_launcher"             //提示重新加载的图片资源-->
    <!--fresco:retryImageScaleType="centerCrop"-->
    <!--fresco:backgroundImage="@color/colorWhite"          //背景图片-->
    <!--fresco:roundAsCircle="false"                        //是否要将图片剪切成圆形-->
    <!--fresco:viewAspectRatio="1"                          //图片宽高比-->
    <!--fresco:overlayImage="@drawable/overlay"             //在图片上方覆盖一个图片资源-->
    <!--fresco:pressedStateOverlayImage="@color/colorBlack"-->
    <!--fresco:roundedCornerRadius="20dp"                   //圆角角度,-->
    <!--fresco:roundTopLeft="true"                          //设置哪个角需要变成圆角-->
    <!--fresco:roundTopRight="false"-->
    <!--fresco:roundBottomLeft="false"-->
    <!--fresco:roundBottomRight="true"-->
    <!--fresco:roundWithOverlayColor="@color/colorWhite"    //圆角部分填充色-->
    <!--fresco:roundingBorderWidth="2dp"                    //边框宽度-->
    <!--fresco:roundingBorderColor="@color/colorBlack"      //边框填充色-->

3.自定义一个类继承Application

package com.example.app;

import android.app.Application;
import android.os.Environment;

import com.facebook.cache.disk.DiskCacheConfig;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipelineConfig;

import java.io.File;

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        File file = new File(Environment.getExternalStorageDirectory()+File.separator+"frescocache");
        Fresco.initialize(this,ImagePipelineConfig.newBuilder(this).
                    setMainDiskCacheConfig(
                DiskCacheConfig.newBuilder(this)
                        .setBaseDirectoryPath(file)
                        .build()
        ).build());

    }
}

4.清单文件中添加权限

<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

5.需导入的依赖

 compile 'com.facebook.fresco:fresco:1.10.0'
 implementation 'com.facebook.fresco:animated-gif:1.10.0'

效果图如下

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43668889/article/details/85252976

智能推荐

五分钟学习---kotlin在Android中的使用。_街道口afs的博客-程序员秘密

五分钟学习---kotlin在Android中的使用。扩展函数:展示和影藏view。fun View.show(){ this.visibility = View.VISIBLE}​fun View.hide() { this.visibility = View.INVISIBLE}​fun View.remove(){ this.visibility = View.GONE}view.show()view.hide() view.remove()​...

linux top ps 命令_weixin_30404405的博客-程序员秘密

http://javawind.net/p131VIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:resident memory usage 常驻内存1、进程当前使用的内存大小,但不包括swap out2、包含其他进程的共享3...

2014蓝桥杯C++A组——史丰收速算_芷汀若静的博客-程序员秘密

目录问题描述题目解析C++代码正确答案问题描述史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!速算的核心基础是:1位数乘以多位数的乘法。其中,乘以7是最复杂的,就以它为例。因为,1/7 是个循环小数:0.142857…,如果多位数超过 142857…,就要进1同理,2/7, 3/7, … 6/7 也都是类似的循环小数,多位数超过 n/7,就要进n下面的程序模拟了史丰收速算法中乘以7的运算过程。乘以 7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取个位

ai人工智能的本质和未来_人工智能如何塑造音乐产业的未来_weixin_26632369的博客-程序员秘密

ai人工智能的本质和未来Artificial Intelligence is a subject that sparks the imagination — and splits opinion. Proponents point to the problem-solving potential of machine learning, and AI’s ability to make many ...

开发中遇到window.open造成的webview白屏问题_window.open跳转出现空白是怎么 回事_Crazy灬Coding的博客-程序员秘密

在一个H5嵌套项目中遇到这样一个问题,当我点击H5页面的某个按钮时,webview页面直接白屏了,开始我怀疑自己的代码是不是由于疏漏移除了WebView,当我用Safari打开调试模式发现,webView存在,内容变成了about:blank,由于我对H5不是很了解,所以请教了H5的开发,那边说就是正常的链接打开,并说在调试工具里面正常,尼玛~~~~。后来我直接在Safari打开H5页面,确实能正...

MySQL实验十 用户及权限管理_mysql 用户和权限实训_派大锌老板的博客-程序员秘密

-- 创建用户create user '[email protected]' identified by 'tom1234';create user 'jack'@'%' identified by 'jack8888';create user 'mike'@'%' identified by 'mike0000';create user 'john'@'localhost' identified by 'john5555';-- 修改用户set password for'tom'@'localhos

随便推点

Python:获取访问者真实IP_python获取访问者ip_乐事原味~的博客-程序员秘密

# IP工具类class IpUtil: # X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。 @staticmethod def get_ip(request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: .

查询工具左侧界面_weixin_33890499的博客-程序员秘密

&lt;%@ page language="java" import="java.util.*" pageEncoding="utf-8"%&gt;&lt;% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName...

vue+element-ui创建调查问卷_Lin'er jingle的博客-程序员秘密

使用vue+element-ui制作创建调查问卷功能;代码如下:(只是一些简单功能)&lt;template&gt; &lt;div class="container"&gt; &lt;el-form ref="form" :model="form" label-width="80px"&gt; &lt;el-form-item label="标题"&gt; &lt;el-input v-model="form.name"&gt;&lt;/el-input&gt;

Ubuntu16.04 安装以后系统默认 软件源_ubuntu16.04默认源_芝士锅的博客-程序员秘密

# deb cdrom:[Ubuntu 16.04.2 LTS _Xenial Xerus_ - Release amd64 (20170215.2)]/ xenial main restricted# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to# newer versions of the...

黑马程序员——网络编程(一)------概述_迷魂小镇灬的博客-程序员秘密

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

keepalived应用:漂移IP的实现_keepalived不使用心跳检测_Joy_B的博客-程序员秘密

1.集群的介绍  每个服务器都叫做一个节点,集群节点之间是可以相互通信的,通信方式有两种:一种是基于RS232心跳线实现心跳监控,另一种用一块单独的网卡来跑心跳。心跳就是用来判断集群每个服务器之间网络、服务是否正常,判断方法就是用连接线,这个连接线可以是网卡,也可以是RS232,一般用网卡网线。  集群必须拥有这几个特性:1.服务实体的扩展功能,可以灵活的增加和剔除某个服务实体。2.当一个节点...