fresco进行代码,或者布进行实现

来源:互联网 发布:linux named配置文件 编辑:程序博客网 时间:2024/05/16 14:50


//代码,通过按钮实现

package com.example.fresco;import android.graphics.Bitmap;import android.graphics.Color;import android.graphics.PointF;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import com.facebook.drawee.backends.pipeline.Fresco;import com.facebook.drawee.backends.pipeline.PipelineDraweeController;import com.facebook.drawee.drawable.ScalingUtils;import com.facebook.drawee.generic.GenericDraweeHierarchy;import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;import com.facebook.drawee.generic.RoundingParams;import com.facebook.drawee.interfaces.DraweeController;import com.facebook.drawee.view.SimpleDraweeView;import com.facebook.imagepipeline.core.ImagePipelineConfig;import com.facebook.imagepipeline.decoder.ProgressiveJpegConfig;import com.facebook.imagepipeline.image.ImmutableQualityInfo;import com.facebook.imagepipeline.image.QualityInfo;import com.facebook.imagepipeline.request.BasePostprocessor;import com.facebook.imagepipeline.request.ImageRequest;import com.facebook.imagepipeline.request.ImageRequestBuilder;import com.facebook.imagepipeline.request.Postprocessor;public class UpdateActivity extends AppCompatActivity {    private SimpleDraweeView img;    private GenericDraweeHierarchyBuilder genericDraweeHierarchyBuilder;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_update);        //获取控件        Button bcbl = (Button) findViewById(R.id.bcbl);        Button zhong = (Button) findViewById(R.id.zhong);        Button yuan = (Button) findViewById(R.id.yuan);        Button yuanjiao = (Button) findViewById(R.id.yuanjiao);        Button bbc = (Button) findViewById(R.id.bbc);        Button xiugai = (Button) findViewById(R.id.xiugai);        Button er = (Button) findViewById(R.id.er);        Button jjs = (Button) findViewById(R.id.jjs);        Button liangbian = (Button) findViewById(R.id.liangbian);        Button leftcenter = (Button) findViewById(R.id.leftcenter);        img = (SimpleDraweeView) findViewById(R.id.img);        er.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // 样式设置,保持宽高比例,对图片进行缩或放,图片位置,不居中,和显示边界右下对齐                GenericDraweeHierarchy FIT_END =genericDraweeHierarchyBuilder.setActualImageScaleType(ScalingUtils.ScaleType.FIT_END).build();                // 图片显示                imageDisplay(FIT_END);            }        });        //使两边都在显示边界内,居中显示。如果图尺寸大于显示边界,则保持长宽比缩小图片        liangbian.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // 设置描述                //        tv_fresco_explain.setText("使两边都在显示边界内,居中显示。如果图尺寸大于显示边界,则保持长宽比缩小图片");                // 样式设置,使图片按比例显示在控件内,                GenericDraweeHierarchy CENTER_INSIDE =genericDraweeHierarchyBuilder.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_INSIDE).build();                // 图片显示                imageDisplay(CENTER_INSIDE);            }        });        //左上为中点显示        leftcenter.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // 设置描述//                tv_fresco_explain.setText("同centerCrop, 但居中点不是中点,而是指定的某个点,这里我设置为图片的左上角那点");                //指定中心点位置                PointF point = new PointF(0,0);                //根据指定的点设置为图片中心,使图片按比例缩小或放大,且裁剪成正方形.                GenericDraweeHierarchy FOCUS_CROP = genericDraweeHierarchyBuilder.setActualImageScaleType(ScalingUtils.ScaleType.FOCUS_CROP)                        .setActualImageFocusPoint(point).build();                // 图片显示                imageDisplay(FOCUS_CROP);            }        });        //修改图片        xiugai.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // 图片地址                Uri uri = Uri.parse("http://120.27.23.105/images/ad/1.jpg");                // 修改图片                Postprocessor postProcessor = new BasePostprocessor() {                    //重新Postprocessor名称.                    @Override                    public String getName() {                        return "postProcessor";                    }                    //具体的进行绘制,bitmap就是下载过来的图片,绘制红色点状网络                    @Override                    public void process(Bitmap bitmap) {                        for (int x = 0; x < bitmap.getWidth(); x += 3) {                            for (int y = 0; y < bitmap.getHeight(); y += 3) {                    //给图片点设置颜色,参数X轴,Y轴,颜色                                bitmap.setPixel(x, y, Color.GRAY);                            }                        }                    }                };                    // 创建图片请求                ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)                    //对加载进行处理.参数就是处理的模型Postprocessor对象.                        .setPostprocessor(postProcessor)                        .build();                    // 控制加载                PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()                        .setOldController(img.getController())                        .setImageRequest(request)                        .build();                    // 加载图片                img.setController(controller);            }        });        //渐进式展示图片        jjs.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // 获取图片URL                Uri uri = Uri.parse("http://120.27.23.105/images/ad/1.jpg");// 加载质量配置,为了实现节省CPU,随着图片下载的进行,下载完的扫描序列如下: 1, 4, 5, 10/* 首次调用getNextScanNumberToDecode返回为2, 因为初始时,解码的扫描数为0。那么1将不会解码,下载完成4个扫描时,解码一次。下个解码为扫描数为6(5不会解码,10才会解码)*/                ProgressiveJpegConfig jpegConfig = new ProgressiveJpegConfig() {                    @Override                    public int getNextScanNumberToDecode(int scanNumber) {                        return scanNumber + 2;                    }                    @Override                    public QualityInfo getQualityInfo(int scanNumber) {                        boolean isGoodEnough = (scanNumber >= 5);                        return ImmutableQualityInfo.of(scanNumber, isGoodEnough, false);                    }                };//上面的和下面一行是固定代码.使用使复制粘贴即可                ImagePipelineConfig.newBuilder(UpdateActivity.this).setProgressiveJpegConfig(jpegConfig).build();// 创建 ImageRequest 对象.                ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)//设置URL                        .setProgressiveRenderingEnabled(true)//打开渐进 渲染                        .build();                DraweeController draweeController = Fresco.newDraweeControllerBuilder()//必须要设置ImageRequest对象,里面包含了图片的网址.                        .setImageRequest(request)//开启用户点击重新加载图片的功能                        .setTapToRetryEnabled(true)//会复用以前的对象,可以节省内存.                        .setOldController(img.getController())                        .build();// 1设置加载的控制                img.setController(draweeController);            }        });        //初始化显示图片        img.setImageURI("http://pic1.sc.chinaz.com/Files/pic/pic9/201711/zzpic8416_s.jpg");        genericDraweeHierarchyBuilder = new GenericDraweeHierarchyBuilder(getResources());        //不包持比例        bbc.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                GenericDraweeHierarchy FIT_XY = genericDraweeHierarchyBuilder.setActualImageScaleType(ScalingUtils.ScaleType.FIT_XY).build();                // 图片显示                imageDisplay(FIT_XY);            }        });        //保持比例        bcbl.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // 样式设置,保持宽高比例,对图片进行缩或放,图片位置居中显示(效果和上面一种类似)                GenericDraweeHierarchy FIT_CENTER =genericDraweeHierarchyBuilder.setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER).build();                // 图片显示                imageDisplay(FIT_CENTER);            }        });        //圆形图片        yuan.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                RoundingParams roundingParams = RoundingParams.asCircle();                GenericDraweeHierarchy build = genericDraweeHierarchyBuilder.setRoundingParams(roundingParams)                        .build();                img.setHierarchy(build);                img.setImageURI("http://120.27.23.105/images/ad/1.jpg");            }        });        //圆角边        yuanjiao.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                RoundingParams roundingParams = RoundingParams.fromCornersRadius(60f);                GenericDraweeHierarchy build = genericDraweeHierarchyBuilder                        .setRoundingParams(roundingParams)                        .build();                img.setHierarchy(build);                img.setImageURI("http://120.27.23.105/images/ad/1.jpg");            }        });        //图片居中显示        zhong.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                GenericDraweeHierarchy build = genericDraweeHierarchyBuilder.setActualImageScaleType(ScalingUtils.ScaleType.CENTER)                        .build();                img.setHierarchy(build);                img.setImageURI("http://120.27.23.105/images/ad/1.jpg");            }        });    }    private void imageDisplay(GenericDraweeHierarchy hierarchy) {// 加载图片        Uri uri = Uri.parse("http://120.27.23.105/images/ad/1.jpg");        img.setHierarchy(hierarchy);        img.setImageURI(uri);    }}

//布局

<?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:orientation="vertical"    android:layout_height="match_parent"    tools:context="com.example.fresco.UpdateActivity">    <com.facebook.drawee.view.SimpleDraweeView        android:layout_width="200dp"        android:layout_marginTop="50dp"        android:layout_height="100dp"        android:background="@color/colorAccent"        android:layout_gravity="center_horizontal"        android:id="@+id/img"/>    <Button        android:layout_marginTop="20dp"        android:id="@+id/zhong"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="居中"/>    <Button        android:id="@+id/yuan"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="圆形"/>    <Button        android:id="@+id/yuanjiao"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="圆角"/>    <Button        android:id="@+id/bcbl"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="保持比例"/>    <Button        android:id="@+id/bbc"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="不保持比例"/>    <Button        android:id="@+id/jjs"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="渐进式展示图片"/>    <Button        android:id="@+id/xiugai"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="修改图片"/>    <Button        android:id="@+id/leftcenter"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="左上角为中点"/>    <Button        android:id="@+id/liangbian"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="两边都在显示边界内,居中显示"/>    <Button        android:id="@+id/er"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="不居中,和显示边界右下对齐"/></LinearLayout>



//单独的布局实现,不要代码

//布局实现务必要加  xmlns:fresco="http://schemas.android.com/apk/res-auto"

<?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:orientation="vertical"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" tools:context="com.example.fresco.MainActivity">     <!-- fresco:fadeDuration="300" // 淡入淡出的持续时间     fresco:actualImageScaleType="focusCrop"  // 实际图像的缩放类型     fresco:placeholderImage="@color/wait_color"  //占位图     fresco:placeholderImageScaleType="fitCenter" //占位图的缩放类型     fresco:failureImage="@drawable/error" //下载失败显示的图片     fresco:failureImageScaleType="centerInside" //失败图的缩放类型     fresco:retryImage="@drawable/retrying"     //图片加载失败时显示,提示用户点击重新加载,重复加载4次还是没有加载出来的时候才会显示failureImage的图片     fresco:retryImageScaleType="centerCrop" //重新加载的图片缩放类型     fresco:progressBarImage="@drawable/progress_bar" //进度条图片     fresco:progressBarImageScaleType="centerInside"     fresco:progressBarAutoRotateInterval="1000"     //进度图自动旋转间隔时间(单位:毫秒ms)     fresco:backgroundImage="@color/blue"     //背景图片,这里的背景图片首先被绘制     fresco:overlayImage="@drawable/watermark"     // 设置叠加图,在xml中只能设置一张叠加图片,如果需要多张图片的话,需要在java代码中设置哦     fresco:pressedStateOverlayImage="@color/red"     // 设置点击状态下的叠加图     fresco:roundAsCircle="false" //设置为圆形图     fresco:roundedCornerRadius="1dp" // 圆角半径     fresco:roundTopLeft="true" // 左上角是否为圆角     fresco:roundTopRight="false"     fresco:roundBottomLeft="false"     fresco:roundBottomRight="true"     fresco:roundWithOverlayColor="@color/corner_color"     fresco:roundingBorderWidth="2dp" //边框的宽度     fresco:roundingBorderColor="@color/border_color" //边框颜色-->    <com.facebook.drawee.view.SimpleDraweeView        android:id="@+id/sd_vw"        android:layout_width="100dp"        android:layout_height="100dp"        />     <com.facebook.drawee.view.SimpleDraweeView         android:id="@+id/sdv_2"         android:layout_width="90dp"         android:layout_height="90dp"         android:layout_marginTop="15dp"         fresco:actualImageScaleType="centerCrop"         fresco:roundAsCircle="true"        /> <com.facebook.drawee.view.SimpleDraweeView     android:layout_width="200dp"     android:layout_height="200dp"     android:id="@+id/yi"/>    <com.facebook.drawee.view.SimpleDraweeView        android:layout_width="200dp"        android:layout_height="100dp"        android:id="@+id/id_main_sdv_sdv2"/>    <com.facebook.drawee.view.SimpleDraweeView        android:id="@+id/id_main_sdv_sdv"        android:layout_width="match_parent"        android:layout_height="200dp"        fresco:actualImageScaleType="focusCrop"        fresco:fadeDuration="3000"        fresco:failureImage="@mipmap/ic_launcher"        fresco:failureImageScaleType="centerInside"        fresco:placeholderImage="@mipmap/ic_launcher"        fresco:placeholderImageScaleType="fitCenter"        fresco:progressBarAutoRotateInterval="1000"        fresco:progressBarImageScaleType="centerInside"        fresco:retryImage="@mipmap/ic_launcher"        fresco:retryImageScaleType="centerCrop"        fresco:roundAsCircle="false"        fresco:viewAspectRatio="1.6" />    <Button        android:onClick="updateimg"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="更改图片"/></LinearLayout>


//配置类  进行初始化

public class App extends Application {    @Override    public void onCreate() {        super.onCreate();        Fresco.initialize(this);}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 琥珀戒指 血珀手串 蓝球走势图 蓝球英语 蓝球怎么玩 蓝球教学 蓝球是什么样的 蓝球比赛时间 篮球多少钱一个 篮球价格一般多少 学生篮球价格一般多少 篮球什么牌子的好 哪个牌子的篮球好 篮球牌子排名 篮球什么牌子的质量好些 篮球买什么牌子的好 篮球什么品牌好 蓝球什么牌子的好 watsing篮球什么品牌 篮球那个牌子好 篮球买什么材质的好 篮球牌子哪个好 篮球服定做 篮球暑期训练营 蓝球训练班 室内篮球馆 蓝球多少钱一个 蓝球多少钱 篮球板多少钱 篮球板价格 篮球裁判服 儿童蓝球 定制篮球服 乔丹蓝球 暑假篮球夏令营 实用篮球训练300例 一个蓝球多少钱 蓝球技巧 小孩学篮球 定做篮球服 篮球板厂家