Android仿iOS左右滑動開關控制元件(Android4.0以上適用)
阿新 • • 發佈:2019-02-05
上週使用Android的switch模仿iOS的左右滑動開關控制元件,程式碼如下:
aty_switch.xml:
<?xml version="1.0" encoding="utf-8"?> <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" tools:context="com.example.suhongwei897.learnandroid.aty.AtySwitch"> <Switch android:id="@+id/mySwitch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:switchMinWidth="30dp" android:textOff="" android:textOn="" android:thumb="@drawable/thumb" android:thumbTextPadding="16dp" android:track="@drawable/track" /> </RelativeLayout>
track.xml:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@drawable/track_on"/> <item android:state_selected="false" android:drawable="@drawable/track_off"/> </selector>
track_on.xml:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#EB520E" /> <size android:width="40dp" android:height="30dp"/> <corners android:radius="15dp"/> </shape>track_off.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#bdbdbd" />
<size android:width="40dp"
android:height="30dp"/>
<corners
android:radius="15dp"/>
</shape>
thumb.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/thumb_on"/>
<item android:state_selected="false" android:drawable="@drawable/thumb_off"/>
</selector>
thumb_on.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@android:color/white" />
<stroke
android:width="1dp"
android:color="#EB520E" />
<size
android:width="30dp"
android:height="30dp" />
</shape>
thumb_off.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@android:color/white" />
<stroke
android:width="1dp"
android:color="#bdbdbd" />
<size
android:width="30dp"
android:height="30dp" />
</shape>
AtySwitch.class:
mySwitch = (Switch) findViewById(R.id.mySwitch);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mySwitch.setSelected(isChecked);
}
});
以下兩個值都是需要設定的:
android:switchMinWidth="30dp"
android:thumbTextPadding="16dp"