第一步:创建类RoundCircleDrawable继承Drawable

/** * 圆角矩形 * @Project    App_View * @Package    com.android.view.drawable * @author     chenlin * @version    1.0 * @Date       2016年4月21日 * @Note       TODO */public class RoundCircleDrawable extends Drawable{    private Paint mPaint;//画笔    private int mWidth;//图片宽与长度的最小值    private int mRadius;//半径    private int mRound;//圆角    private RectF mRectF;//矩形    private Bitmap mBitmap;//图片    private Type mType = Type.TYPE_ROUND;//默认是矩形    //设置类型    enum Type{        TYPE_ROUND, TYPE_CICLE;    }    public RoundCircleDrawable(Bitmap bitmap){        this.mBitmap = bitmap;        //初始化画笔        mPaint = new Paint();        mPaint.setAntiAlias(true);        BitmapShader shader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP);        mPaint.setShader(shader);        mWidth = Math.min(mBitmap.getWidth(), mBitmap.getHeight());        mRadius = mWidth / 2;    }    /**     * 向外提供设置图片类型的方法     * @param type     */    public void setType(Type type){        this.mType = type;    }    /**     * 暴露给外面设置圆角的大小     *      * @param round     */    public void setRound(int round) {        this.mRound = round;    }    @Override    public void setBounds(int left, int top, int right, int bottom) {        super.setBounds(left, top, right, bottom);        mRectF = new RectF(left, top, right, bottom);    }    @Override    public void draw(Canvas canvas) {        if (mType == Type.TYPE_ROUND) {            canvas.drawRoundRect(mRectF, mRound, mRound, mPaint);        }else {            canvas.drawCircle(mWidth / 2, mWidth / 2, mRadius, mPaint);        }    }    @Override    public int getIntrinsicWidth() {        if (mType == Type.TYPE_CICLE) {            return mWidth;        }else {            return mBitmap.getWidth();        }    }    @Override    public int getIntrinsicHeight() {        if (mType == Type.TYPE_CICLE) {            return mWidth;        }else {            return mBitmap.getHeight();        }    }    @Override    public void setAlpha(int alpha) {        mPaint.setAlpha(alpha);    }    @Override    public void setColorFilter(ColorFilter cf) {        mPaint.setColorFilter(cf);    }    @Override    public int getOpacity() {        return PixelFormat.TRANSLUCENT;    }}

2.实现方法

public class RoundActivity extends Activity {    private ImageView mImageView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_round_drawable);        mImageView = (ImageView) findViewById(R.id.iv_round);        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.aa);        //RoundImageDrawable drawable = new RoundImageDrawable(bitmap);        //drawable.setRound(30);        RoundCircleDrawable drawable = new RoundCircleDrawable(bitmap);        drawable.setRound(50);        mImageView.setImageDrawable(drawable);    }}

———————————————————————
有需求者请加qq:136137465,非诚勿扰
(java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万)
01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
(送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门)
——————————————————————–

更多相关文章

  1. ADROID 2.1 架构解析 11 系统时间
  2. 布局文件绘制圆角矩形 背景图片
  3. android实现圆角矩形背景的方法
  4. 安卓课程十七 Button图文混排的按钮
  5. 安卓课程二十 CheckBox复选框控件使用
  6. 安卓课程二十三 ImageView实现适屏和裁剪图片
  7. 【职业学习规划】Android架构师方向
  8. 手机淘宝Android客户端架构

随机推荐

  1. android 自定义搜索 的简单实现
  2. android第一个应用程序
  3. Android蓝牙开发—经典蓝牙详细开发流程
  4. Android中TextView文本过长滚动显示实现
  5. 总结安卓各大版本(4.0-9.0)的区别、新特
  6. Android(安卓)应用性能评估
  7. Android(安卓)如何将定制的Launcher成为
  8. Android(安卓)adb shell 命令
  9. Android(安卓)UI之RelativeLayout(相对布
  10. Android:网页设计界面