Android 使用Drawable实现圆角与圆形图案
发布日期:2021-06-30 22:34:36
浏览次数:2
分类:技术文章
本文共 3248 字,大约阅读时间需要 10 分钟。
第一步:创建类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入门) ——————————————————————–转载地址:https://lovoo.blog.csdn.net/article/details/51207527 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月18日 08时03分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Spring Security之旅————————————基本介绍安装(1)
2021-07-03
Spring IO Platform学习
2021-07-03
局部加权回归
2021-07-03
已知后序和中序求层序
2021-07-03
1051. Pop Sequence (25)
2021-07-03
ELK系列:新版ELK安装(windows与linux环境)
2021-07-03
Discovering Neural Wiring(2019 nips, nas)
2021-07-03
2020kickstart E round C Toys (优先队列)
2021-07-03
pytorch raise NotImplementedError
2021-07-03
LeetCode 887. 鸡蛋掉落
2021-07-03
第七届acm省赛总结
2021-07-03
oj第一次打字比赛成绩
2021-07-03
山东理工大学 2506 完美网络
2021-07-03
pat 城市救援 最短路
2021-07-03
poj 2533 Longest Ordered Subsequence
2021-07-03
poj 1936 All in All
2021-07-03
hihocoder 1555 四次方根(矩阵快速幂)
2021-07-03
codeforces 449 D Jzzhu and Numbers(容斥+dp)
2021-07-03