第一次写带图片的博客,多少还是有点紧张,效果不好,请将就着看,前面的图是今天要写的控件的效果图,元素不多,分别是一个按钮和一个自定义的控件。
在此以前,我看过许多的书,比如《Android群英传》、《第一行代码》等,也看了很多大神的博客,但是即便是这样,当我看到这么多代码的时候,一直都没有真正的动手去敲过这些代码,以至于我总是觉得自定义View是一个多么高深莫测的技术,我们这些小白是难以触及的,但是当昨晚看了一篇鸡汤之后,觉得人还是要学会专注,要耐得住寂寞,要沉得住气。所以在未来的几天,我也会持续的更新自己的博客,希望能够得到大家的监督,也希望能够一起成长。
一般来说,不到迫不得已,还是不要去自定义自己的控件,毕竟现在Android API已经给我提供了功能这么强大的控件了,而且你也能够发现,就算是这么强大的谷歌,很多控件也还是有自己的bug,更何况我们自己写的控件,当然了,通过自定义控件,来加深我们对Android系统的控件的了解,这也是进阶的一个好方法。好了,废话我先说到这里,下面开始今天的主题。
贝塞尔曲线这个话题,很多大神的文章都有涉及,在郭神的微信公众号里面专门有一篇文章讲到了:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650236243&idx=1&sn=00f003c809b1e3a3e5e7cb372d3ec970&scene=0#wechat_redirect ,所以我这里就不谈这个了。下面就开始进入编码阶段
新建一个Class文件,命名为MyLineView,让它继承View,实现它的三个构造函数,紧接着初始化一些画笔、Path,圆等数据。代码如下:
1.定义变量
Paint mPaint, mPaint2; Path mPath = Path(); mViewWidth, mViewHeight; mWidth, mHeight; r, rArc, x; percent = f; RectF rectF; PointF mPointF = PointF(, );
在构造函数里面初始化数据
public MyLineView(Context context, AttributeSet attrs) { super(context, attrs) mPaint = new Paint() mPaint(Color) mPaint() mPaint(Paint) mPaint() mPaint2 = new Paint() mPaint2(Color) mPaint2() mPaint2(Paint) }
准备工作已经做好了,紧接着我们复写View的一个onSizeChanged()方法,故名思议,就是当控件的大小发生改变的时候调用。我们在这里对变量进行赋值,代码如下:
( w, h, oldw, oldh) { .onSizeChanged(w, h, oldw, oldh); mViewWidth = w; mViewHeight = h; mWidth = mViewWidth - getPaddingLeft() - getPaddingRight(); mHeight = mViewHeight - getPaddingTop() - getPaddingBottom(); r = Math.min(mWidth, mHeight) * f; rectF = RectF(-r, -r, r, r); }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 控件
, android自定义view
, 代码
, 自定义view
, wechat
, paint
, android 自定义控件
, 贝塞尔函数
, 贝塞尔
, 求android大神帮助
, android 进度条更新
, 曲线图android数据库
一个
自定义view进度条、ios 贝塞尔进度条动画、自定义view画曲线、贝塞尔曲线、ios 贝塞尔曲线,以便于您获取更多的相关知识。