CheckedImageButton.java 2.88 KB
Newer Older
konghaorui committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
package com.yidianling.dynamic.common.view;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageButton;

/**
 * 选中图片控件
 */
public class CheckedImageButton extends ImageButton {

    private boolean checked;

    private int normalBkResId;

    private int checkedBkResId;

    private Drawable normalImage;

    private Drawable checkedImage;

    private int leftPadding, topPadding, rightPadding, bottomPadding;

    public CheckedImageButton(Context context) {
        super(context);
    }

    public CheckedImageButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CheckedImageButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void setPaddingValue(int value) {
        setPaddingValue(value, value, value, value);
    }

    public void setPaddingValue(int left, int top, int right, int bottom) {
        leftPadding = left;
        topPadding = top;
        rightPadding = right;
        bottomPadding = bottom;
        setPadding(leftPadding, topPadding, rightPadding, bottomPadding);
    }

    public boolean isChecked() {
        return checked;
    }

    public void setChecked(boolean push) {
        this.checked = push;

        Drawable image = push ? checkedImage : normalImage;
        if (image != null) {
            updateImage(image);
        }

        int background = push ? checkedBkResId : normalBkResId;
        if (background != 0) {
            updateBackground(background);
        }
    }

    public void setNormalBkResId(int normalBkResId) {
        this.normalBkResId = normalBkResId;
        updateBackground(normalBkResId);
    }

    public void setCheckedBkResId(int checkedBkResId) {
        this.checkedBkResId = checkedBkResId;
    }

    public void setNormalImageId(int normalResId) {
        normalImage = getResources().getDrawable(normalResId);
        updateImage(normalImage);
    }

    public void setCheckedImageId(int pushedResId) {
        checkedImage = getResources().getDrawable(pushedResId);
    }

    public void setNormalImage(Bitmap bitmap) {

        this.normalImage = new BitmapDrawable(getResources(), bitmap);
        updateImage(this.normalImage);
    }

    public void setCheckedImage(Bitmap bitmap) {
        this.checkedImage = new BitmapDrawable(getResources(), bitmap);
    }

    private void updateBackground(int resId) {
        setBackgroundResource(resId);
        setPadding(leftPadding, topPadding, rightPadding, bottomPadding);
//        int padding = ScreenUtil.dip2px(7);
//        setPadding(padding, padding, padding, padding);
    }

    private void updateImage(Drawable drawable) {
        //  setScaleType(ScaleType.FIT_CENTER);
        setImageDrawable(drawable);
    }
}