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。可以實現拖動,背景也可以跟著拖動。但是程式碼的實現上不是那麼嚴謹,不能調整大小,不能靈活自定義樣式。
這兩個的實現原理基本類似,程式碼也比較少,有興趣的同學可以研究一下原始碼,非常值得學習的開源專案。
相關文章
- Android自定義控制元件模仿iOS滑塊SwitchButtonAndroid控制元件iOS
- SQLite中中實現 if not exist 類似功能SQLite
- [譯]如何在 iOS 上實現類似 Airbnb 中的可展開式選單iOSAI
- 在鴻蒙中實現類似瀑布流效果鴻蒙
- iOS動畫系列之七:實現類似Twitter的啟動動畫iOS動畫
- 在Asp.Net中實現類似DWR的功能ASP.NET
- Android中使用RecyclerView + SnapHelper實現類似ViewPager效果AndroidViewpager
- PostgreSQL類似OracleMERGE功能的實現SQLOracle
- 簡單實現類似Spring的Aop原理實現Spring
- iOS 類似美團外賣 app 兩個 tableView 聯動效果實現iOSAPPView
- MySQL的字首索引及Oracle的類似實現MySql索引Oracle
- 類似咻一咻,水波紋實現
- go如何實現類似java的動態代理GoJava
- 實現類似IE的列印網頁功能 (轉)網頁
- (iOS)帶你寫一個類似MJRefresh的上下拉重新整理控制元件iOS控制元件
- 在狀態列中插入類似進度條的可視控制元件控制元件
- Android實現類似QQ對話方塊的@他人的整體解決方案Android
- 用 golang 去實現類似 swoole 的 websocket 服務 ?GolangWeb
- 教你如何用SQLite 實現if not exist 類似功能的操作SQLite
- Blazor如何實現類似於微信的Tab切換?Blazor
- JS實現類似於微博秀的GitHub掛件JSGithub
- 實現類似Pinterest 的圖片預載入功能REST
- 實現類似QQ的即時通訊程式(十一)
- MySQL 06 mysql 如何實現類似 oracle 的 merge intoMySqlOracle
- Flutter 實現類似TabPicker省市區選擇Flutter
- flutter實現類似優惠券樣式Flutter
- 類似這樣的連結是如何實現的呢?
- PHP - 實現類似於百度的實時搜尋PHP
- android 實現類似qq未讀訊息點選迴圈顯示Android
- 直播系統中網頁類似app頁面切換動畫的實現方式網頁APP動畫
- 討論一下基於網頁聊天的實現(類似gmail中的聊天)網頁AI
- Laravel 小技巧 - 讓路由實現類似 Model::query 的效果Laravel路由
- 如何實現類似 lodash 的 get 與 merge 函式函式
- 採用 SwiftNIO 實現一個類似 Express 的 Web 框架SwiftExpressWeb框架
- 兩步實現類似格瓦拉的轉場動畫動畫
- 用Java 19實現類似Go併發 - mccueJavaGo
- JS實現 類似圖片3D效果JS3D
- C# SQLiteHelper類似SqlHelper類實現存取Sqlite資料庫C#SQLite資料庫