天天看點

Android 中文 API (29) —— CompoundButton

一、結構

    public abstract class CompoundButton extends Button implements Checkable

    java.lang.Object

            android.widget.CompoundButton

二、概述

    一個帶有選中/未選中狀态的按鈕。當按鈕按下或點中時自動改變狀态。 

三、公共方法

         public boolean dispatchPopulateAccessibilityEvent (AccessibilityEvent event)

         在子視圖的建構時分派一個輔助事件。(譯者注:通過源碼可以看出,視圖建構時設定其選中狀态。)

                   參數

                            event       事件

                   傳回值

                            如果事件全部完成傳回True。

         public boolean isChecked ()

         (譯者注:是否選中)

         public void onRestoreInstanceState (Parcelable state)

         允許視圖重新應用以前通過onSaveInstanceState()生成代表内部的狀态。這個函數決不調用一個空的狀态。

                            state       傳回以前調用onSaveInstanceState()儲存下來的狀态。

         public Parcelable onSaveInstanceState ()

         允許視圖生成一個代表内部的狀态,以後可用于建立一個與之相同的新的執行個體。這種狀态應該隻包含非持久或以後不能夠重建的資訊。例如,你決不存儲你目前在螢幕上的位置,因為這會在視圖的層面上重新計算放置一個新的執行個體。

         你可以存儲到這裡的一些例子:一個文本框中目前光标的位置(但通常不是文字本身,文字通常儲存在内容提供者(content provider)或其他持久的儲存中),一個清單視圖中的目前選中項。

                            傳回一個包含視圖目前狀态的Parcelable對象,或沒有什麼狀态儲存時傳回null。預設實作傳回null。

         public boolean performClick ()

         如果視圖定義了OnClickListener監聽器,調用此方法來執行。

                            定義了的OnClickListener被調用傳回True,否則傳回False

         public void setButtonDrawable (Drawable d)

         給按鈕背景設定一個可繪制對象(如:圖像)

                            d      用作背景的可繪制對象(如:圖像)

         public void setButtonDrawable (int resid)

         通過資源Id給按鈕背景設定一個圖像

                            resid        作為背景圖像的資源id

         public void setChecked (boolean checked)

         改變按鈕的選中狀态

                  參數

                            checked true選中,false非選中

         public void setOnCheckedChangeListener (CompoundButton.OnCheckedChangeListener listener)

         注冊一個在按鈕狀态發生改變時執行的回調函數

                            listener  當選中狀态改變時調用的函數

         public void toggle ()

         改變選中狀态為目前狀态的逆狀态

四、受保護方法

         protected void drawableStateChanged ()

         在視圖狀态的變化影響到所顯示可繪制的狀态時調用這個方法。

  確定在重載時中調用父類方法

         protected int[] onCreateDrawableState (int extraSpace)

         為目前視圖生成新的可繪圖區狀态。這個方式當緩存的圖像繪圖區狀态确定失效時通過視圖系統調用。你可以使用getDrawableState()方法重新取得目前的狀态。

                            extraSpace      如果為非零,這是你應該傳回的數組在你可以存放你的狀态的額外條目的數量。

                            傳回一個記錄着視圖中目前繪圖區狀态的數組

         protected void onDraw (Canvas canvas)

         實作你自己的繪制。

                            canvas    在畫布上繪制背景

         protected boolean verifyDrawable (Drawable who)

         如果你的視圖子類顯示他自己的可視化對象,他将要重寫此方法并且為了顯示可繪制傳回true。此操作允許進行繪制時有動畫效果。

  确認當重寫從方法時,需調用父類相應方法。

                            who         需判斷的可繪制對象(Drawable)。如果是你要顯示的對象,傳回True,否則傳回調用父類的結果。

                            boolean 如果可繪制對象(Drawable)已經在視圖中顯示,傳回True否則傳回false。并且此處不允許使用動畫。 

繼續閱讀