2

我试图弄清楚如何为我的 Android 应用程序创建和使用自定义整数按钮状态。我发现这个链接用于创建布尔(只有两个可能的值)按钮状态,这似乎工作正常。但是我现在有一个案例,我想有多个状态的可能性,我想用一个整数来指定它们。

这就是我现在正在做的事情:

import android.content.Context;
import android.util.Log;
import android.widget.ImageView;

public class MultiStateImageView extends ImageView{
private final static String LOG_TAG = MultiStateImageView.class.getSimpleName();

private static final int[] MULTI_STATE = {R.attr.multi_state};

private final int numStates;
private int state;

public MultiStateImageView(Context context, int numStates){
    super(context);
    this.numStates = numStates;
    state = 0;
}

public void setState(int state){
    if(state >= numStates){
        Log.e(LOG_TAG, "can't set a state higher than the number available!");
    }
    this.state = state;
    refreshDrawableState();
}

@Override
public int[] onCreateDrawableState(int extraSpace){
    final int[] drawableState = super.onCreateDrawableState(extraSpace + 2);
    mergeDrawableStates(drawableState, MULTI_STATE);
    return drawableState;
}

问题是我显然根本没有使用 state 字段。我应该如何为整数状态执行此操作?

4

1 回答 1

1

我认为这是不可取的,这就是不支持它的原因。在我的例子中,我尝试了一种状态,该状态采用 idle=0、walk=1 和 run=2 作为按钮的数值。我将其更改为三个独立的状态作为布尔值。在我的示例中,一种状态可能为真,因此如果它们的组合为真,则随机选择一个作为状态。我希望我能找到一种方法来做到这一点,而不会允许多个真实状态,比如数值方法。

于 2013-09-16T15:14:44.060 回答