项目中遇到selector中错误使用.9图的情况
参考:https://www.jianshu.com/p/a3ee9db15590
当使用selector设置button按压效果透明度变化时,我们通常会这样设置
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<bitmap android:alpha="0.3" android:src="@drawable/select_btn" />
</item>
<item android:drawable="@drawable/select_btn" />
</selector>
但是当select_btn是.9图时,这样使用会导致按压效果时,图片异常。
原因是bitmapdraw不支持.9图的拉伸,可参考https://blog.csdn.net/a49220824/article/details/53267972提到的现象
如果是绘制,我们会用NinePatch解决,如下:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bubble);
NinePatch ninePatch = new NinePatch(bitmap, bitmap.getNinePatchChunk(), null);
RectF rectF = new RectF(l, t, r, b);
ninePatch.draw(canvas, rectF);
在selector中我们使用nine-patch标签即可解决此问题
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<nine-patch android:alpha="0.3" android:src="@drawable/search_download_btn" />
</item>
<item android:drawable="@drawable/search_download_btn"/>
</selector>