2013-09-05 2 views
2

Я пытаюсь понять, как создать и использовать пользовательское целое состояние кнопки для моего приложения Android. Я нашел ссылку this для создания состояний кнопки boolean (только два возможных значения) и, похоже, работает нормально. Но теперь у меня есть случай, когда я хотел бы иметь возможность множественных состояний, и я бы хотел обозначить их целым числом.Пользовательское целое состояние кнопки (не boolean!)

Вот что я делаю сейчас:

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

Проблема заключается в том, что я, очевидно, не используя государственную поле вообще. Как я должен делать это для целочисленного состояния?

ответ

1

Я думаю, что это нецелесообразно, и поэтому он не поддерживается. В моем случае я попробовал одно состояние, которое принимало числовые значения с idle = 0, walk = 1 и run = 2 для кнопки. Я изменил это как три отдельных состояния как логическое. В моем примере одно состояние может быть истинным, поэтому, если есть комбинация из них, которые являются истинными, одно случайным образом выбирается как состояние. Я бы хотел найти способ сделать это, не допуская более одного истинного состояния, как, например, численный подход.

Смежные вопросы