六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 38|回复: 0

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

[复制链接]

升级  37.33%

30

主题

30

主题

30

主题

秀才

Rank: 2

积分
106
 楼主| 发表于 2013-1-15 02:26:47 | 显示全部楼层 |阅读模式
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 {
<div class="articalContent">  @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;
      }
    }

}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表