需求如下:整体是一个自定义view,该view中有一个图片,点击后切换状态,图片跟着切换。
很自然的想到selector中的state切换,定义一个selector文件如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/voice_ing" android:state_selected="true"/>
<item android:drawable="@drawable/voice"/>
</selector>
根据state_selected来显示不同图片。
自定义view中主要代码:
private StateListDrawable stateListDrawable;
public CircularProgressView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
@SuppressLint("Recycle")
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CircularProgressView);
// 初始化,StateListDrawable继承自Drawable,这里可以强制转换
stateListDrawable = (StateLis