Android圆角矩形创建工具RoundRect类

用于把普通图片转换为圆角图像的工具类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 imageID 图片资源ID
     * @param context 上下文对象
     * @return output 转换后的圆角矩形图像
     */

    Bitmap toRoundRect(Context context, int imageID) {

        //创建位图对象
        Bitmap photo = BitmapFactory.decodeResource(context.getResources(), imageID);

        //根据源文件新建一个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;
    }

}

测试效果:

创建矩形图标:

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

原文地址:http://www.cnblogs.com/woider/p/5122911.html

时间: 2024-10-16 06:43:37

Android圆角矩形创建工具RoundRect类的相关文章

android圆角矩形有背景颜色

android 圆角矩形,渐变颜色,自定义 首先,在drawable目录下写一个xml,名字随便起(只要符合规范),代码如下: <span style="color:#009900;"><span style="background-color: rgb(255, 255, 255);"><?xml version="1.0" encoding="utf-8"?> <shape xml

android圆角矩形有边框无背景色

我们经常要用到圆角矩形,这也是现在的流行的样式..但是今天在工作中,遇到要写圆角矩形有边框但无背景色的button,本来想让妹子帮忙切图的,但是不想麻烦妹子,自己撑着,说可以做,结果弄了老半天菜搞定的,现在给大家看看,以后避免这麻烦...() <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/and

android圆角矩形进度条

最近做项目,有个一个需求,就是圆角进度条.效果图如下. 当时项目时间很紧,没多去想怎么实现最佳,就直接把美工给的圆角进度条裁剪成了四份.来做 Canvas 剪切绘制.这样虽然也能达到效果,但是服用性很差.最近网上搜索了很长时间,发现Paint画笔,有遮挡层的功能.android.graphics.Paint.setXfermode(Xfermode xfermode) .其中一个参数就是 Mode.DST_OUT 显示底图与上层图非交集的底图图像.于是就有个思路,先绘制圆角矩形进度条,然后设置画

android圆角矩形的实现

在res/drawable目录下穿件shape的xml来实现圆角矩形效果.代码如下: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:bottomL

android圆角矩形背景

Android平台 使用方便 StateRoundRectDrawable mRoundRectDradable = new StateRoundRectDrawable(int normalCorlor, int pressColor); mRoundRectDradable.setBottomLeftRadius(0); mRoundRectDradable.setBottomRightRadius(0); ............. xxxxx.setBackgroundDrawable(

android圆角矩形出现四个角黑点的解决方法

只要在布局对应的activity的oncreate方法的第一行加上 getWindow().setBackgroundDrawableResource(android.R.color.transparent); 即可解决该问题

Android 图片上传 工具提交类(三)

大体部分与post提交类似,只是需要设置 <pre name="code" class="java">MultipartEntity 代码如下: public class userUploadServiceImpl implements userUploadService{ @Override public String userUpload(InputStream in, Map<String, String> data, String p

Android中实现圆角矩形及半透明效果。

注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 在做Android开发时,我们为了美观,有时候需要使用圆角矩形,或半透明之类的效果,在网页设计中很容易实现.但在Android开发中,要稍微麻烦一点,但实现起来也不算很难. 关于设定背景图片平铺的方法请参考上一篇文章:http://itcolin.com/archives/1153.html 一.首先,需要在drawable-mdpi目录里定义一个xml文件,我命名为frame 编写如下代码,其中corners 中定义每边的圆角

[转]html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形

上一篇文章我讲了画矩形和圆形的方法,他们都有原生的canvas绘图函数可完成.而本文讲的圆角矩形则只有通过其他方法模拟出来. 一个正常的圆角矩形,我们先假设他四个角的圆角弧度一致——因为这样比较好画.我们动用把面拆成线条的能力,很容易就能发现圆角矩形其实是由4条钩子般的曲线组成. 提到钩子,如果你看过我介绍arcTo的文章,那么可能你一下就明白了这种图形就可以用arcTo画出来. 我讲arcTo的时候提过,arcTo有个特性就是,他的第2条切线延长也并不会对他画出的线条造成影响(在上文的最后部分