Android中實現類似iOS的SwitchButton控制元件
iOS的SwitchButton深入人心,也被Android上的產品設計借鑑,在Android4.0中,系統就帶有原生的Switch控制元件了。但是在老版本的Android上,怎樣實現這個功能呢?
最簡單的方法就是,把SwitchButton看成是個CheckBox或者ToggleButton,直接設定button屬性或者background屬性就可以。
但是這樣實現,並沒有像iOS上那樣的滑動動畫效果。下面介紹兩種自定義的SwitchButton的控制元件的開源庫。
1 http://ankri.de/switch-button-for-android-2-3-gingerbread/
這篇博文中詳細介紹了其實現方法,也可以下載到原始碼。這個可以用手拖動開關,效果非常接近了。但是也是有缺點的,不能實現背景移動,其背景是一個ProgressDrawable。
2 https://github.com/Issacw0ng/SwitchButton
這個是我堅果的最完美模擬iOS效果的SwitchButton。可以實現拖動,背景也可以跟著拖動。但是程式碼的實現上不是那麼嚴謹,不能調整大小,不能靈活自定義樣式。
這兩個的實現原理基本類似,程式碼也比較少,有興趣的同學可以研究一下原始碼,非常值得學習的開源專案。
最簡單的方法就是,把SwitchButton看成是個CheckBox或者ToggleButton,直接設定button屬性或者background屬性就可以。
- <?xml version="1.0" encoding="utf-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/check_box_on" android:state_checked="true"/>
- <item android:drawable="@drawable/check_box_off" android:state_checked="false"/>
- </selector>
但是這樣實現,並沒有像iOS上那樣的滑動動畫效果。下面介紹兩種自定義的SwitchButton的控制元件的開源庫。
1 http://ankri.de/switch-button-for-android-2-3-gingerbread/
這篇博文中詳細介紹了其實現方法,也可以下載到原始碼。這個可以用手拖動開關,效果非常接近了。但是也是有缺點的,不能實現背景移動,其背景是一個ProgressDrawable。
2 https://github.com/Issacw0ng/SwitchButton
這個是我堅果的最完美模擬iOS效果的SwitchButton。可以實現拖動,背景也可以跟著拖動。但是程式碼的實現上不是那麼嚴謹,不能調整大小,不能靈活自定義樣式。
這兩個的實現原理基本類似,程式碼也比較少,有興趣的同學可以研究一下原始碼,非常值得學習的開源專案。
相關文章
- PostgreSQL類似OracleMERGE功能的實現SQLOracle
- iOS動畫系列之七:實現類似Twitter的啟動動畫iOS動畫
- 在鴻蒙中實現類似瀑布流效果鴻蒙
- 深度解析:在 React 中實現類似 Vue 的 KeepAlive 元件ReactVue元件
- MySQL 06 mysql 如何實現類似 oracle 的 merge intoMySqlOracle
- 用 golang 去實現類似 swoole 的 websocket 服務 ?GolangWeb
- 如何實現類似 lodash 的 get 與 merge 函式函式
- 教你如何用SQLite 實現if not exist 類似功能的操作SQLite
- flutter實現類似優惠券樣式Flutter
- Flutter 實現類似TabPicker省市區選擇Flutter
- [譯] Story 中 Type Mode 在 iOS 和 Android 上的實現iOSAndroid
- 採用 SwiftNIO 實現一個類似 Express 的 Web 框架SwiftExpressWeb框架
- 在dotnet core實現類似crontab的定時任務
- Laravel 小技巧 - 讓路由實現類似 Model::query 的效果Laravel路由
- Blazor如何實現類似於微信的Tab切換?Blazor
- 開源一個自用的Android事件分發中心庫,實現類似系統廣播功能。Android事件
- 使用KubernetesIngress來實現類似Istio條件路由路由
- H5開發類似rpx實現方法H5
- 用Java 19實現類似Go併發 - mccueJavaGo
- VSCode中類似Postman的外掛VSCodePostman
- 【iOS】含tableView的ViewController基類的實現iOSViewController
- WinForm使用DataGridView實現類似Excel表格的查詢替換ORMViewExcel
- 如何在 web 頁面中實現類似 excel 固定表頭 / 標題行的效果?WebExcel
- 直播系統中網頁類似app頁面切換動畫的實現方式網頁APP動畫
- iOS_實現類似蒲公英、fir等發包平臺 通過URL分發內測APPiOSAPP
- 01 . Go之從零實現Web框架(類似Gin)GoWeb框架
- iOS 類知乎”分頁”效果的實現?iOS
- WPF實現html中的table控制元件HTML控制元件
- 原生JS實現類似《掘金》網站的圖片檢視器JS網站
- 使用.net standard實現不同內網埠的互通(類似花生殼)內網
- [Swift]SpriteKit實現類似畫素鳥的小遊戲 - Crashy PlaneSwift遊戲
- VirtualView Android實現詳解(二)—— 虛擬控制元件的設計與實現ViewAndroid控制元件
- 用 hyperf websocket 實現,類似 qq 單機登入功能Web
- Android開發 - (介面卡)Adapter類中BaseAdapter實現類詳細解析AndroidAPT
- Android開發 - (介面卡)Adapter類中SimpleAdapter實現類詳細解析AndroidAPT
- 做⼀個⾼德地圖的 iOS / Android MAUI 控制元件(上)地圖iOSAndroidUI控制元件
- iOS 中的 GCD 實現詳解iOSGC
- 探索iOS中Block的實現原理iOSBloC
- iOS實現元件錄屏視訊不可見,使用者肉眼可見(類似系統鍵盤效果)iOS元件