之前給大家分享了自定義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是沒有這些方法的,繼承現有的控件就是這麼簡單,在現有的控件不能滿足你日常開發的時候,直接用它進行擴充,并且也繼承了父類的所有屬性,日常開發中應用還是很廣泛的。