private OneStateDrawable getOrCreateDrawableForState(int[] stateSet) { OneStateDrawable drawable; int key = keyOfStateSet(stateSet); if (key == -1) { key = mStateSets.size(); mStateSets.append(key, stateSet); drawable = new OneStateDrawable(this); drawable.setAlpha(this.alpha); drawable.setDefaultColor(defaultColor); drawable.setBounds(bounds); drawables.append(key, drawable); int currentKey = keyOfBestMatchingStateSet(getState()); if (currentKey == key) { currentDrawable = drawable; } } else { drawable = drawables.get(key); } return drawable; }