之前给大家分享了自定义view之组合控件,今天呢,给大家分享一个继续现有的控件,其实继承现有的控件我们平时遇到的还是比较多的,如Edittext 、button都是继承自TextView的,有时候我们写个展示圆形图片的控件也会选择继承现有的Imageview,原本是想写一个圆形控件的,但发现类似这种的博客很多,所有呢,今天仅仅是给大家讲讲继承现有控件的自定义 view的原理,今天我就以Chronometer为基础,给大家讲讲。
继承现有的控件,实际上是现有控件无法满足你日常开发的需要,所有呢需要在父类控件的基础上对其进行扩展,我今天所将的这个控件和上面说的Edittext、button等一样,都是继承自TextView的,但是呢,这个控件是用来计时的,这个功能呢,就是在TextView的基础上添加的,它继承了textview父类的一切属性,而且用法也特别简单,下面给大家展示一下
<Chronometer android:id="@+id/mChronomer_id" android:layout_width="0dp" android:layout_height="50dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" android:gravity="center" />
布局文件直接添加,使用起来也特简单,我这里写了一个特简单的就是点击button开始和停止计时
mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!isstarting){ isstarting=true; mButton.setText("暂停"); chronometer.setBase(SystemClock.elapsedRealtime()); chronometer.start(); }else { isstarting=false; mButton.setText("开始"); chronometer.stop(); } } });
像上述的setBase、start、stop等方法,都是在TextView进行扩展的,而textView是没有这些方法的,继承现有的控件就是这么简单,在现有的控件不能满足你日常开发的时候,直接用它进行扩展,并且也继承了父类的所有属性,日常开发中应用还是很广泛的。