原型图

  <ImageView
        android:id="@+id/roundimage"
        android:layout_width="400dp"
        android:layout_height="400dp"
        />

///

View v = View.inflate(getActivity(), R.layout.activity_main,null);
    image = (ImageView)v.findViewById(R.id.roundimage);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
            R.drawable.ic_launcher);
    Bitmap bm = Tp.getRoundBitmap(bitmap);
    image.setImageBitmap(bm);

/

attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="RotateTextView">
        <attr name="degree" format="dimension" />
    </declare-styleable>
    
    <declare-styleable name="CircleImageView">
        <attr name="border_width" format="dimension" />
        <attr name="border_color" format="color" />
    </declare-styleable>
    
    <declare-styleable name="CropImageView">
        <attr name="guidelines">
            <enum name="on" value="2"/>
            <enum name="onTouch" value="1"/>
            <enum name="off" value="0"/>
        </attr>
        <attr name="fixAspectRatio" format="boolean"/>
        <attr name="aspectRatioX" format="integer"/>
        <attr name="aspectRatioY" format= "integer"/>
        <attr name="imageResource" format="reference"/>
    </declare-styleable>
</resources>

//

public class Tp {
    public static Bitmap getRoundBitmap(Bitmap bitmap) {
        // 获取传入进来的Bitmap宽度和高度
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        int r = 0;// 园的半径
        if (width < height) {
            r = width;
        } else {
            r = height;
        }
        // 新建一个bitmap,相当于传入进来的bitmap的copy
        Bitmap backgroundBitmap = Bitmap.createBitmap(width, height,
                Config.ARGB_8888);
        // 建立画布
        Canvas canvas = new Canvas(backgroundBitmap);
        // 建立画笔
        Paint paint = new Paint();
        // 无锯齿
        paint.setAntiAlias(true);
        // 矩形
        RectF rect = new RectF(0, 0, r, r);
        // 画圆角矩形,当它的宽和高一样时,就是一个圆了
        canvas.drawRoundRect(rect, r / 2, r / 2, paint);
        // 取画布和bitmap相交的部分,即展示的圆
    
        paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
        // 画出圆形头像
        canvas.drawBitmap(bitmap, null, rect, paint);

        return backgroundBitmap;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值