
org.robolectric.shadows.ShadowStateListDrawable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of framework Show documentation
Show all versions of framework Show documentation
An alternative Android testing framework.
The newest version!
package org.robolectric.shadows;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.util.AttributeSet;
import android.util.StateSet;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Implements(StateListDrawable.class)
public class ShadowStateListDrawable extends ShadowDrawable {
private final Map stateToResource = new HashMap<>();
private final Map, Drawable> stateToDrawable = new HashMap<>();
public void addState(int stateId, int resId) {
stateToResource.put(stateId, resId);
}
public int getResourceIdForState(int stateId) {
return stateToResource.get(stateId);
}
@Implementation
public void addState(int[] stateSet, Drawable drawable) {
stateToDrawable.put(createStateList(stateSet), drawable);
}
@Implementation
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs) throws XmlPullParserException, IOException {
}
/**
* Non Android accessor to retrieve drawable added for a specific state.
*
* @param stateSet Int array describing the state
* @return Drawable added via {@link #addState(int[], android.graphics.drawable.Drawable)}
*/
public Drawable getDrawableForState(int[] stateSet) {
return stateToDrawable.get(createStateList(stateSet));
}
private List createStateList(int[] stateSet) {
List stateList = new ArrayList<>();
if (stateSet == StateSet.WILD_CARD) {
stateList.add(-1);
} else {
for (int state : stateSet) {
stateList.add(state);
}
}
return stateList;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy