博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android圆角矩形创建工具RoundRect类
阅读量:5304 次
发布时间:2019-06-14

本文共 4088 字,大约阅读时间需要 13 分钟。

用于把普通图片转换为圆角图像的工具类RoundRect类(复制即可使用):

import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;public class RoundRect {    private int width;    private int height;    private float cornerRadius;    /**     * 用于初始化圆角矩形基本参数     *     * @param width        图片宽度     * @param height       图片高度     * @param cornerRadius 圆角半径     */    public RoundRect(int width, int height, float cornerRadius) {        this.width = width;        this.height = height;        this.cornerRadius = cornerRadius;    }    /**     * 用于把普通图片转换为圆角矩形图像     *     * @param path 图片路径     * @return output 转换后的圆角矩形图像     */    Bitmap toRoundRect(String path) {        //创建位图对象        Bitmap photo = lessenUriImage(path);        return Transformation(photo);    }    /**     * 用于把普通图片转换为圆角矩形图像     *     * @param imageID 图片资源ID     * @param context 上下文对象     * @return output 转换后的圆角矩形图像     */    Bitmap toRoundRect(Context context, int imageID) {        //创建位图对象        Bitmap photo = BitmapFactory.decodeResource(context.getResources(), imageID);        return Transformation(photo);    }    /**     * 用于把Uri图片转换为Bitmap对象     *     * @param path 图片URI地址     * @return 生成的Bitmap对象     */    public final static Bitmap lessenUriImage(String path) {        BitmapFactory.Options options = new BitmapFactory.Options();        options.inJustDecodeBounds = true;        Bitmap bitmap = BitmapFactory.decodeFile(path, options); //此时返回 bm 为空        options.inJustDecodeBounds = false; //缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可        int be = (int) (options.outHeight / (float) 320);        if (be <= 0) be = 1;        options.inSampleSize = be; //重新读入图片,注意此时已经把 options.inJustDecodeBounds 设回 false 了        bitmap = BitmapFactory.decodeFile(path, options);        int w = bitmap.getWidth();        int h = bitmap.getHeight();        System.out.println(w + " " + h); //after zoom        return bitmap;    }    /**     * 用于把Bitmap图像转换为圆角图像     *     * @param photo 需要转换的Bitmap对象     * @return 转换成圆角的Bitmap对象     */    private Bitmap Transformation(Bitmap photo) {        //根据源文件新建一个darwable对象        Drawable imageDrawable = new BitmapDrawable(photo);        // 新建一个新的输出图片        Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);        Canvas canvas = new Canvas(output);        // 新建一个矩形        RectF outerRect = new RectF(0, 0, width, height);        // 产生一个红色的圆角矩形        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);        paint.setColor(Color.RED);        canvas.drawRoundRect(outerRect, cornerRadius, cornerRadius, paint);        // 将源图片绘制到这个圆角矩形上        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));        imageDrawable.setBounds(0, 0, width, height);        canvas.saveLayer(outerRect, paint, Canvas.ALL_SAVE_FLAG);        imageDrawable.draw(canvas);        canvas.restore();        return output;    }}
RoundRect.class

测试效果:

创建矩形图标:

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.image);        ImageView image = (ImageView)findViewById(R.id.image);        RoundRect roundRect = new RoundRect(500,500,100);        Bitmap photo = roundRect.toRoundRect(this,R.drawable.kms);        image.setImageBitmap(photo);    }}

创建圆形头像:

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.image);        ImageView image = (ImageView)findViewById(R.id.image);        RoundRect roundRect = new RoundRect(500,500,300);        Bitmap photo = roundRect.toRoundRect(this,R.drawable.indark);        image.setImageBitmap(photo);    }}

 

转载于:https://www.cnblogs.com/woider/p/5122911.html

你可能感兴趣的文章
JavaScript介绍
查看>>
开源网络漏洞扫描软件
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
创新课程管理系统数据库设计心得
查看>>
Hallo wolrd!
查看>>
16下学期进度条2
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
Chapter 3 Phenomenon——12
查看>>
C语言中求最大最小值的库函数
查看>>
和小哥哥一起刷洛谷(1)
查看>>
jquery对id中含有特殊字符的转义处理
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
pandas 修改指定列中所有内容
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>