android 笔记 ----- 按钮Button应用
让按钮有按下效果
这个其实很简单,首先,准备两张按钮的图片,分别是正常状态和按下状态,我就举 btn_normal.png btn_press.png 为例子,通过下面的XML就实现了不同状态下按钮的效果。调用时,只要在 android:background=”@drawable/btn” 就好了,其中btn就是下面的btn.xml 文件,放在drawable文件夹下面。
自定义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 void onCreate(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)); } class MyButton extends View { public MyButton(Context context) { super(context); } //以下这个方法也可以把你的图片数组传过来,以StateListDrawable来设置图片状态,来表现button的各中状态。未选中,按下,选中效果。 public StateListDrawable setbg(Integer[] mImageIds) { StateListDrawable bg = new StateListDrawable(); 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; } } }