天天看點

安卓自定義view(繼承現有的view)

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