標籤:android style http io ar color sp java for
1.編寫主類
package com.sample.button;import android.content.Context;import android.content.res.TypedArray;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.util.Log;import android.widget.CompoundButton;import com.example.buttonsample.R;public class MyButton extends CompoundButton {public MyButton(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}private Drawable imgOFF;private Drawable imgON;public MyButton(Context context, AttributeSet attrs) {super(context, attrs);TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyButton, 0, 0);try {imgOFF = a.getDrawable(R.styleable.MyButton_imgOFF);imgON = a.getDrawable(R.styleable.MyButton_imgON);} catch (Exception e) {e.printStackTrace();}a.recycle();}public MyButton(Context context) {super(context);}@Overridepublic void setChecked(boolean checked) {super.setChecked(checked);udpateDrawable();}private void udpateDrawable() {if (this.isChecked()) {Log.e(MyButton.class.getName(),"changing to imgON");this.setBackgroundDrawable(imgON);} else {Log.e(MyButton.class.getName(),"changing to imgOFF");this.setBackgroundDrawable(imgOFF);}}@Overrideprotected void onFinishInflate() {udpateDrawable();super.onFinishInflate();}}
2.編寫attrs定義檔案(res/values/attrs.xml)
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="MyButton"> <attr name="imgON" format="reference" /> <attr name="imgOFF" format="reference" /> </declare-styleable> </resources>
3.涉及到的2個圖片資源如下
res/drawable/off.png
res/drawable/on.png
4.測試用activity的layout檔案
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.example.buttonsample" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.sample.button.MyButton android:id="@+id/testmy" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/white" app:imgOFF="@drawable/off" app:imgON="@drawable/on" > </com.sample.button.MyButton></LinearLayout>
5.實際效果即:
點擊按鈕時,按鈕會在以下2個圖片之間切換.
一個簡單的android自訂view(Switch Button for api < 14)