Android性能XML可绘制vs CSS3与图像

我正在尝试在Android应用程序中创build一些自定义切换button。 我希望他们看起来像下面这样:

自定义切换按钮

在此图像中,75,39和AZ处于“关”状态,37处于“开”状态。

所以我的问题是:

哪一个是在Android中生成这些的最好方法:

  1. 带有边框,背景,边框半径的XML可绘制

  2. 每个形状,状态和屏幕密度的一组9幅图像

  3. 使用WebView并使用CSS3?

  • HttpURLConnection(java.net.CookieManager)和WebView(android.webkit.CookieManager)之间的Cookie的双向同步
  • Android:在webview中调试javascript的问题
  • Kitkat杀死:不允许加载本地资源:file:///android_asset/webkit/android-weberror.png
  • Android,抓住webviewredirecturl
  • Android:设备屏幕不与最新的Android系统WEBVIEW超时
  • Android,webview用户代理与浏览器用户代理
  • YouTube iframeembedded无法在Android上自动播放
  • JQuery不适用于WebView
  • 好的。 我已经去了XML Drawable。 这是我的解决scheme:

    <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_checked="true"> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:top="0dp" android:bottom="2dp" android:left="0dp" android:right="0dp"> <shape android:shape="rectangle"> <solid android:color="@color/toggle_border_dark" /> <corners android:topLeftRadius="20dp" android:topRightRadius="20dp" android:bottomRightRadius="30dp" android:bottomLeftRadius="30dp" /> </shape> </item> <item android:top="2dp" android:bottom="0dp" android:left="0dp" android:right="0dp"> <shape android:shape="rectangle"> <solid android:color="@color/toggle_border_light" /> <corners android:topLeftRadius="30dp" android:topRightRadius="30dp" android:bottomRightRadius="20dp" android:bottomLeftRadius="20dp" /> </shape> </item> <item android:top="1dp" android:right="1dp" android:left="1dp" android:bottom="1dp"> <shape android:shape="rectangle" > <solid android:color="@color/toggle_bg_on" /> <corners android:topLeftRadius="20dp" android:topRightRadius="20dp" android:bottomRightRadius="20dp" android:bottomLeftRadius="20dp" /> </shape> </item> </layer-list> </item> <item> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:top="0dp" android:bottom="2dp" android:left="0dp" android:right="0dp"> <shape android:shape="rectangle"> <solid android:color="@color/toggle_border_light" /> <corners android:topLeftRadius="20dp" android:topRightRadius="20dp" android:bottomRightRadius="30dp" android:bottomLeftRadius="30dp" /> </shape> </item> <item android:top="2dp" android:bottom="0dp" android:left="0dp" android:right="0dp"> <shape android:shape="rectangle"> <solid android:color="@color/toggle_border_dark" /> <corners android:topLeftRadius="30dp" android:topRightRadius="30dp" android:bottomRightRadius="20dp" android:bottomLeftRadius="20dp" /> </shape> </item> <item android:top="1dp" android:right="1dp" android:left="1dp" android:bottom="1dp"> <shape android:shape="rectangle" > <solid android:color="@color/toggle_bg_off" /> <corners android:topLeftRadius="20dp" android:topRightRadius="20dp" android:bottomRightRadius="20dp" android:bottomLeftRadius="20dp" /> </shape> </item> </layer-list> </item> </selector>