圆形圆角imagView

来源:互联网 发布:linux less 编辑:程序博客网 时间:2024/05/05 23:00

自定义属性::;

<?xml version="1.0" encoding="utf-8"?>
<resources>




    <!-- 自定义圆形imageview/圆角图imageview 自定义属性 开始 -->


    <attr name="borderRadius" format="dimension" />
    <attr name="type">
        <enum name="circle" value="0" />
        <enum name="round" value="1" />
    </attr>
    <attr name="border_thickness" format="dimension" />
    <attr name="border_inside_color" format="color" />
    <attr name="border_outside_color" format="color"/>


    <declare-styleable name="MRoundedBitmapView">\
        /** 圆角大小*/
        <attr name="borderRadius" />


        /** 类型 circle圆形图 、round圆角图 */
        <attr name="type" />


        /** 边框厚度 (无效) **/
        <attr name="border_thickness"/>


        /** 内边框颜色 (无效)**/
        <attr name="border_inside_color"/>


        /** 外边框颜色 (无效)**/
        <attr name="border_outside_color"/>
    </declare-styleable>
    <!-- 自定义圆形imageview/圆角图imageview 自定义结束 -->

</resources>



绘图::::

 /**
     * 根据原图和变长绘制圆形图片
     *
     * @param source
     * @param min
     * @return
     */
    private Bitmap createCircleImage(Bitmap source, int min)
    {
        final Paint paint = new Paint();
        paint.setAntiAlias(true);


        Bitmap target = Bitmap.createBitmap(min, min, Bitmap.Config.ARGB_8888);


        /**
         * 产生一个同样大小的画布
         */
        Canvas canvas = new Canvas(target);


        /**
         * 首先绘制圆形
         */
        canvas.drawCircle(min / 2, min / 2, min / 2, paint);


        /**
         * 使用SRC_IN,参考上面的说明
         */
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));


        /**
         * 绘制图片
         */
        canvas.drawBitmap(source, 0, 0, paint);
        return target;
    }


    /**
     * 根据原图添加圆角
     *
     * @param source
     * @return
     */
    private Bitmap createRoundConerImage(Bitmap source)
    {
        final Paint paint = new Paint();
        paint.setAntiAlias(true);


        Bitmap target = Bitmap.createBitmap(defaultWidth, defaultWidth, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(target);
        RectF rect = new RectF(0, 0, source.getWidth(), source.getHeight());


        canvas.drawRoundRect(rect,mRadius, mRadius, paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(source, 0, 0, paint);
        return target;
    }


下载地址::

http://download.csdn.net/detail/e10010e/9095329


0 0
原创粉丝点击