读书人

Android自定义button的实现未选中

发布时间: 2012-09-20 09:36:50 作者: rapoo

Android自定义button的实现,未选中,按下,选中效果

package com.test.TestButton;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class TestButton extends Activity {

??@Override
?? ?public voidonCreate(Bundle savedInstanceState) {
??????super.onCreate(savedInstanceState);
??????setContentView(R.layout.main);
??????Integer[] mButtonState = {R.drawable.defaultbutton,
????????????R.drawable.focusedpressed, R.drawable.pressed};
??????Button mButton = (Button)findViewById(R.id.button);
??????MyButton myButton = new MyButton(this);
??????mButton.setBackgroundDrawable(myButton.setbg(mButtonState));
?? ?}

?? ?classMyButton extends View {

??????public MyButton(Context context) {
?????????super(context);
??????}
??????//以下这个方法也可以把你的图片数组传过来,以StateListDrawable来设置图片状态,来表现button的各中状态。未选中,按下,选中效果。
??????public StateListDrawable setbg(Integer[]mImageIds) {
?????????StateListDrawable bg = newStateListDrawable();
?????????Drawable normal =this.getResources().getDrawable(mImageIds[0]);
?????????Drawable selected =this.getResources().getDrawable(mImageIds[1]);
?????????Drawable pressed =this.getResources().getDrawable(mImageIds[2]);
?????????bg.addState(View.PRESSED_ENABLED_STATE_SET,pressed);
?????????bg.addState(View.ENABLED_FOCUSED_STATE_SET,selected);
?????????bg.addState(View.ENABLED_STATE_SET,normal);
?????????bg.addState(View.FOCUSED_STATE_SET,selected);
?????????bg.addState(View.EMPTY_STATE_SET, normal);
?????????return bg;
??????}
?? ?}

}

读书人网 >Android

热点推荐