自定义 Android 切换曲目 'animation'

Custom Android switch track 'animation'

我创建了一个基本自定义 Switch,定义如下。

<Switch
        android:id="@+id/availSwitch"
        android:layout_width="wrap_content"
        android:switchMinWidth="110dp"
        android:layout_height="wrap_content"
        android:track="@drawable/switch_track"
        android:thumb="@drawable/thumb"/>

@drawable/thumb 是一个简单的 PNG,效果很好。

@drawable/switch_track定义如下。 @drawable/trackon@drawable/trackoff 是 PNG 的。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="false" android:drawable="@drawable/trackoff" />
    <item android:state_checked="true"  android:drawable="@drawable/trackon" />
    <item                               android:drawable="@drawable/trackoff" />

</selector>

这个开关在大多数情况下看起来和工作都符合预期,但是有什么方法可以 'animate' 当用户拖动时拇指在轨道上移动时?在选中和未选中之间淡入淡出,或者最好更改 'behind' 拇指。

当前行为如下所示。

有一段时间我也在寻找相同的功能,当时我需要一个类似于原生 iOS 的切换按钮功能,可以将其拖到 on/off 用于我的一个项目。当时苦苦寻找,找到了这个库

https://github.com/pellucide/Android-Switch-Demo-pre-4.0

希望这也是您正在寻找的。

A Switch is a two-state toggle switch widget that can select between two options. The user may drag the "thumb" back and forth to choose the selected option, or simply tap to toggle as if it were a checkbox. The text property controls the text displayed in the label for the switch, whereas the off and on text controls the text on the thumb .

对于此要求,您需要自定义 Switch 按钮功能

您可以访问演示

  1. Slide Toggle for Android

  2. Android-Switch-Demo-pre-4.0

  3. Custom Toggle Button for Android Applications

下面两行你需要理解。

        android:thumb="@drawable/customswitchselector"
        android:track="@drawable/custom_track"

它有两个标签:android:thumb and android:track。当我们滑动或更改状态时,Thumb 将绘制实际外观。

您需要自定义切换按钮

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/darkGray"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.gisinc.androidexamples.myapplication.MyActivity">

    <com.gisinc.androidexamples.androidtogglebutton.SettingsToggle
        xmlns:widget="http://schemas.android.com/apk/res-auto"
        android:id="@+id/settings1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        widget:prefName="useMyLocation"
        widget:text="Use My Location" />

</RelativeLayout>

参见 this