小编Yua*_*uan的帖子

Android:如何以编程方式创建StateListDrawable

我有一个GridView来显示一些对象,并且在视觉上每个对象都有一个图像图标和一个文本标签.我还希望图像图标在单击时具有一些"推动和弹出"效果,也就是说,按下时,图像将向右下方移动一小段距离,并在释放后返回其原始位置.

对象(及其图像图标)来自某些动态源.我的直觉是为每个项创建一个StateListDrawable,它有两种状态:是否按下.对于GridView项目视图,我会使用一个Button,它可以容纳Drawable和一个标签,完全满足我的要求.

我定义了一个item类来包装原始对象:

public class GridItem<T> {

    public static final int ICON_OFFSET = 4;

    private StateListDrawable mIcon;
    private String mLabel;
    private T mObject;

    public Drawable getIcon() {
        return mIcon;
    }

    public void setIcon(Drawable d) {
        if (null == d) {
            mIcon = null;
        }else if(d instanceof StateListDrawable) {
            mIcon = (StateListDrawable) d;
        } else {
            InsetDrawable d1 = new InsetDrawable(d, 0, 0, ICON_OFFSET, ICON_OFFSET);
            InsetDrawable d2 = new InsetDrawable(d, ICON_OFFSET, ICON_OFFSET, 0, 0);
            mIcon = new StateListDrawable();
            mIcon.addState(new int[] { …
Run Code Online (Sandbox Code Playgroud)

android statelist

36
推荐指数
2
解决办法
3万
查看次数

标签 统计

android ×1

statelist ×1