天天看点

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 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;

}

继续阅读