使用BitmapShader在自定义View中画圆形
来源:互联网 发布:中文域名有什么价值 编辑:程序博客网 时间:2024/06/13 09:57
/** * 画个圆 * Created by cold on 15/9/21. */public class BitShape extends View { private Bitmap bitmap; private Context context; private BitmapShader bitmapShader; //该view为50dp的圆 private int width=50; private int widthpx;//图片的宽度像素 private float mRadius;//圆半径 private Matrix mMatrix;//缩放矩阵 private Paint bitmapPaint;//画笔 //在构造方法中各种初始化 public BitShape(Context context) { super(context); this.context=context; //设置默认显示的图片 this.bitmap=getRes("default_pic"); bitmapPaint = new Paint(); bitmapPaint.setAntiAlias(true); mMatrix = new Matrix(); bitmapShader=new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); bitmapPaint.setShader(bitmapShader); } public BitShape(Context context, AttributeSet attrs) { super(context, attrs); this.context=context; this.bitmap=getRes("default_pic"); bitmapPaint = new Paint(); bitmapPaint.setAntiAlias(true); mMatrix = new Matrix(); bitmapShader=new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); bitmapPaint.setShader(bitmapShader); } //设置大小为50dp @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); widthpx=dp2px(width); mRadius=widthpx/2; setMeasuredDimension(widthpx,widthpx); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //先设置图片的缩放 float scale = 1.0f; // 拿到bitmap宽或高的小值 int bSize = Math.min(bitmap.getWidth(), bitmap.getHeight()); scale = widthpx * 1.0f / bSize; // shader的变换矩阵,我们这里主要用于放大或者缩小 mMatrix.setScale(scale, scale); // 设置变换矩阵 bitmapShader.setLocalMatrix(mMatrix); //调用.setShader方法 bitmapPaint.setShader(bitmapShader); //画圆 canvas.drawCircle(mRadius, mRadius, mRadius, bitmapPaint); } //改变要绘制的bitmap public void changeBitmap(Bitmap bitmap){ this.bitmap=bitmap; bitmapShader=new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); //通知重绘 postInvalidate(); } //获取Bitmap public Bitmap getRes(String name) { ApplicationInfo appInfo = context.getApplicationInfo(); int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName); return BitmapFactory.decodeResource(getResources(), resID); } public int dp2px(int dpVal) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal, getResources().getDisplayMetrics()); }}
0 0
- 使用BitmapShader在自定义View中画圆形
- Android使用BitmapShader图形渲染实现圆形、圆角和椭圆自定义图片View
- Android圆形图片不求人,自定义View实现(BitmapShader使用)
- Android圆形图片不求人,自定义View实现(BitmapShader使用)
- 使用BitmapShader显示圆形头像
- Android自定义View【实战教程】4⃣️----BitmapShader详解及圆形、圆角、多边形实现
- 自定义View画圆形进度条
- 使用BitmapShader实现图片的圆形、圆角
- 使用BitmapShader实现圆形,圆角图片
- 在自定义View中使用自定义属性
- 自定义View—使用clipPath或者BitmapShader实现圆角图片
- Android 自定义View 使用ShapeDrawable加BitmapShader实现图片局部放大效果
- 如何在ios中使用自定义view
- 自定义view在XML中使用
- 自定义View,圆形图框
- 自定义View圆形进度条
- 自定义圆形进度View
- 自定义View--圆形ImageView
- LWIP使用经验---变态级(好文章)
- 如何在Linux上安裝JDK(Java Development Kit)?
- pycharm下pyuic工具使用问题解决方案
- 世界是数字的重点读书笔记(计算机科普知识)
- BaseAbsActivity的使用
- 使用BitmapShader在自定义View中画圆形
- Python--基本文件方法
- Java性能分析小工具 ---- jconsole
- 一个宏解决 iOS屏幕适配
- XMST2015下半年加班
- Android开发之利用XMPP协议实现消息的即时推送
- [Phonegap+Sencha Touch] 移动开发63 PhoneGap和Cordova的区别
- MongoDB学习5_Elasticsearch、MongoDB和Hadoop比较
- 6、 多媒体、表格