Android自定义View遇到的问题
来源:互联网 发布:小米笔记本能装linux 编辑:程序博客网 时间:2024/05/20 15:11
在尝试画一个圆角矩形框的时候,用了两种方式实现,但是发现画出来的效果不一样,很是费解,不明白为什么会不一样,这里先收集起来,后续再解决。
第一种方式
画两个圆角矩形重叠,内部的圆角矩形稍小一点,并且颜色和背景色相同,这样就能形成一个圆角矩形框了,代码如下:
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint.setAntiAlias(true); //通过onMeasure获取到view的高,以高的一半作为圆角的半径 int round = mHeight / 2; //画一个圆角矩形 mPaint.setColor(Color.GRAY); rf.set(0, 0, mWidth, mHeight); canvas.drawRoundRect(rf, round, round, mPaint); //在内部再画一个圆角矩形,这样两个圆角矩形重叠就形成一个圆环,也就是一个线框 mPaint.setColor(Color.WHITE); rfB.set(2, 2, mWidth - 2, mHeight - 2); canvas.drawRoundRect(rfB, round, round, mPaint); }
以上,实现的效果是想要的效果。如下图:
第二种方式
虽然上面的方式很好的实现了想要的效果,但是Paint自带有中空的样式,也就是说使用Paint的样式直接就能画一个中空的圆角矩形,而不必画两个圆角矩形,于是尝试了一下,代码如下:
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint.setAntiAlias(true); //设置Paint的样式为中空 mPaint.setStyle(Paint.Style.STROKE); //设置边框的宽度 mPaint.setStrokeWidth(2); int round = mHeight / 2; //画一个圆角矩形 mPaint.setColor(Color.GRAY); rf.set(0, 0, mWidth, mHeight); canvas.drawRoundRect(rf, round, round, mPaint); }
看着代码好像没什么问题,但是运行效果却不是想要的:
可以看到,很明显的,在圆角处的线比横线要粗,也就是整个圆角矩形的线宽不一致。。。这个很是费解啊。
有尝试过不设置Paint的setStrokeWidth(),这样的效果,虽然整个圆角矩形的线宽一致了,但是边框不能自定义宽度
难道要想做自定义边框宽度的线框,就只能使用两个图层叠加来实现吗?
这个问题目前还没有能力解决,先记录下来,后续在解决。
0 0
- Android自定义View遇到的问题
- 自定义view遇到的问题
- 自定义view中遇到的问题--绘制自定义view
- 自定义View遇到的相关问题
- 自定义view时遇到的android.view.InflateException: Binary XML file问题
- android 自定义view更新的时候遇到的问题(求解答)
- Android应用插件化开发中自定义View基础插件遇到的问题
- 移植自定义View过程中遇到的问题及解决方法
- Viewpager中嵌入自定义可缩放view遇到的问题
- Viewpager中嵌入自定义可缩放view遇到的问题
- 安卓自定义绘制View中遇到的问题
- Android 自定义view 的绘制时机 问题
- android 自定义通知栏遇到的问题
- Android 自定义软键盘遇到的问题
- android Notification自定义view(view不更新的问题)
- android的自定义View
- Android 自定义View 使用问题
- Android 自定义View 使用问题
- vim每日一练(三)——查找匹配
- 线段树构造
- PAT(甲级)1067
- HDFS 2.7.1 所有配置项
- Android Studio 导入 Eclipse 的代码后,运行时中文显示乱码
- Android自定义View遇到的问题
- android开发之android:process属性_application中onCreate执行多次
- java多线程环境下对变量的读写操作的原子性问题
- PAT(甲级)1068
- iOS开发-常用第三方开源框架介绍
- Matlab 图像处理-哈夫曼编码(huffman)
- Cate:我是如何准备Google面试的
- HTML列表是什么?
- UNIX时间