android4.0新控制元件Switch方法解析
就是很像開關的那種控制元件,它只有兩個狀態:on和off:在IOS中,有個UISwitch控制元件,其效果圖,如下:
父類:compoundButton。
可以在main.xml中這樣定義:
當Switch狀態切換時:
基本上先簡單的講到這。
在android4.0裡面,新增了一個和這個類似的控制元件:Switch,很形象,開關。效果圖如下:
其類關係圖如下:
java.lang.Object | |||||
↳ | android.view.View | ||||
↳ | android.widget.TextView | ||||
↳ | android.widget.Button | ||||
↳ | android.widget.CompoundButton | ||||
↳ | android.widget.Switch |
類的概述:
Switch是一個可以在兩種狀態切換的開關控制元件。使用者可以拖動"thumb"來回選擇,也可以像選擇核取方塊一樣點選切換Switch的狀態。
主要方法:
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | getCompoundPaddingRight() Returns the right padding of the view, plus space for the right Drawable if any. | ||||||||||
CharSequence | getTextOff() Returns the text displayed when the button is not in the checked state. | ||||||||||
CharSequence | getTextOn() Returns the text displayed when the button is in the checked state. | ||||||||||
void | jumpDrawablesToCurrentState() Call Drawable.jumpToCurrentState() on all Drawable objects associated with this view. | ||||||||||
void | onMeasure(int widthMeasureSpec, int heightMeasureSpec) Measure the view and its content to determine the measured width and the measured height. | ||||||||||
void | onPopulateAccessibilityEvent(AccessibilityEvent event) Called from dispatchPopulateAccessibilityEvent(AccessibilityEvent) giving a chance to this View to populate the accessibility event with its text content. | ||||||||||
boolean | onTouchEvent(MotionEvent ev) Implement this method to handle touch screen motion events. | ||||||||||
void | setChecked(boolean checked) Changes the checked state of this button. | ||||||||||
void | setSwitchTextAppearance(Context context, int resid) Sets the switch text color, size, style, hint color, and highlight color from the specified TextAppearance resource. | ||||||||||
void | setSwitchTypeface(Typeface tf, int style) Sets the typeface and style in which the text should be displayed on the switch, and turns on the fake bold and italic bits in the Paint if the Typeface that you provided does not have all the bits in the style that you specified. | ||||||||||
void | setSwitchTypeface(Typeface tf) Sets the typeface in which the text should be displayed on the switch. | ||||||||||
void | setTextOff(CharSequence textOff) Sets the text displayed when the button is not in the checked state. | ||||||||||
void | setTextOn(CharSequence textOn) Sets the text displayed when the button is in the checked state. |
getCompoundPaddingRight():沒弄清楚什麼意思。
在TextView中的原始碼:
public int getCompoundDrawablePadding() { final Drawables dr = mDrawables; return dr != null ? dr.mDrawablePadding : 0; }
jumpDrawableToCurrentState():在與Switch相關的Drawable操作時呼叫 Drawable.jumpToCurrentState()這個方法。
getTextOff()、getTextOn()、 setTextOff()、setTextOn()這四個方法比較簡單,就是設定和獲取非選中和選中狀態下的文字值。
onMeasure():測量控制元件寬高,供繪圖時使用。
onTouchEvent(MotionEvent ev)實現這一方法傳遞觸控式螢幕運動事件。
setChecked()設定Switch的狀態(選中,非選中)
setSwitchTextAppearance()設定字型大小
setSwitchTextTypefaces設定字型格式
看看google官方在/frameworks/base/core/res/res/values/styles.xml的一個定義:
<style name="Widget.Holo.CompoundButton.Switch">
<item name="android:track">@android:drawable/switch_track_holo_dark</item>
<item name="android:thumb">@android:drawable/switch_inner_holo_dark</item>
<item name="android:switchTextAppearance">@android:style/TextAppearance.Holo.Widget.Switch</item>
<item name="android:textOn">@android:string/capital_on</item>
<item name="android:textOff">@android:string/capital_off</item>
<item name="android:thumbTextPadding">12dip</item>
<item name="android:switchMinWidth">96dip</item>
<item name="android:switchPadding">16dip</item>
</style>
可以在main.xml中這樣定義:
<Switch
android:id="@+id/demo_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:textOn="開"
android:textOff="關"
/>
當Switch狀態切換時:
mSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
//選中時 do some thing
statusText.setText("開");
} else {
//非選中時 do some thing
statusText.setText("關");
}
}
});
基本上先簡單的講到這。
相關文章
- 自定義Switch控制元件控制元件
- Flutter控制元件--Switch 和 SwitchListTileFlutter控制元件
- switch控制元件(變更顏色)控制元件
- android原始碼解析--switchAndroid原始碼
- Selenium switch_to方法
- 三層switch轉一層switch的處理方法
- .net控制元件解析控制元件
- Java 17 新特性:switch的模式匹配(Preview)Java模式View
- 如何設計一個 iOS 控制元件? iOS 控制元件完全解析iOS控制元件
- 文字路徑動畫控制元件TextPathView解析動畫控制元件View
- 任天堂申請註冊Switch新商標 似乎為新服務模式模式
- Flutter 基礎控制元件篇-->單選框(Switch)、核取方塊(Checkbox)Flutter控制元件
- Android Switch控制元件(在android2.2 api8及以上使用)Android控制元件API
- Java的URL.equals()方法竟然執行DNS解析| 黑客新聞JavaDNS黑客
- Java的URL.equals()方法竟然執行DNS解析| 駭客新聞JavaDNS
- 新ASP.NET圖表控制元件ASP.NET控制元件
- 新提案:Go 泛型玩出花來了,switch type 登場!Go泛型
- Kotlin直接使用控制元件ID原理解析Kotlin控制元件
- 深度解析11個最常用的遊戲控制元件遊戲控制元件
- android4.0 開啟硬體加速後應用執行出錯 android4.0 開啟硬體加速後應用執行出錯...Android
- 鴻蒙Next安全控制元件深度揭秘:貼上與儲存控制元件全解析鴻蒙控制元件
- session switchSession
- JSPatch近期新特性解析JS
- 在WPF中使用WinForm控制元件方法ORM控制元件
- Voodoo案例講解:跑酷遊戲型別解析與創新重構方法分享Odoo遊戲型別
- 騰訊Nintendo Switch™媒體見面會 首次分享國行引進新進展
- 動態新增控制元件時,計算控制元件大小的解決方法控制元件
- 第一站小紅書圖片裁剪控制元件,深度解析大廠炫酷控制元件控制元件
- Js陣列方法解析JS陣列
- iOS 本地DNS解析方法iOSDNS
- Properties使用方法解析
- SVG <switch>元素SVG
- Java switch caseJava
- js switch 使用JS
- log file switch
- Go之旅-SwitchGo
- switch default 作用
- java之switchJava