本文主要是介绍安卓开发 自定义控件 奥米噶 ClockView,打造自己的奥米噶送给你的女神,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天用安卓的画笔和画布给大家画一个奥米噶手表,新手上路可能有点困难,不过跟着画一遍,就会充分了解和熟悉安卓的自定义控件了,话不多收直接上图,看看我们的奥米噶;
感觉还可以是吧*
下面带上studio,让我们为自己做一个奥米噶吧:
1.初始化自定义控件ClockView,重写onMeasure方法
自定义类ClockView继承自View,完善构造方法,这里我们重写一下onMeasure方法,因为手表表盘基本都是高和宽相等的嘛,自己写过自定义控件的朋友肯定非常熟悉这个步骤,代码如下:
@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);viewWidth = MeasureSpec.getSize(widthMeasureSpec);viewHeight = MeasureSpec.getSize(heightMeasureSpec);int widthMode = MeasureSpec.getMode(widthMeasureSpec);int heightMode = MeasureSpec.getMode(heightMeasureSpec);switch (widthMode) {case MeasureSpec.EXACTLY:viewWidth = viewHeight = Math.min(viewHeight, viewWidth);setMeasuredDimension(viewWidth, viewHeight);break;case MeasureSpec.AT_MOST:float density = getResources().getDisplayMetrics().density;viewWidth = viewHeight = (int) (100 * density);setMeasuredDimension(viewWidth, viewHeight);break;}textsize = viewWidth / 32;i``
itpaint();}
onDraw方法是在onMeasure方法之后调用的,所以这里我在计算宽高之后,给一些属性初始化了,以及textsize赋值了,之所以在这里赋值,,也就是itpaint方法,如下:
private void initpaint() {panPaint = new Paint(Paint.ANTI_ALIAS_FLAG);textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);textPaint.setColor(Color.WHITE);textPaint.setTextSize(textsize);rect = new Rect();}
当然里的初始化可以在以在很多地方
2.重写onDraw方法
重头戏都在这个onDraw方法里面,首先我们要明白一点,先画出来的东西,会被后画出来的东西遮盖住(重叠的地方),所以,我们必须知道先画什么,后画什么。
2.1表盘
表盘看着很简单,外面一个环,里面一个圆,通过设置画笔paint的属性(实心、空心,以及画笔的粗细),调用canvas的drawCircle方法来完成,这里主要就是弄明白原型,以及半径就可以了,代码如下:
//画出蓝绿色表盘内测panPaint.setColor(getResources().getColor(R.color.biaopan));canvas.drawCircle(getWidth() / 2, getHeight() / 2, (float) (getWidth() /
这篇关于安卓开发 自定义控件 奥米噶 ClockView,打造自己的奥米噶送给你的女神的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!