美文网首页
selector使用.9图的问题

selector使用.9图的问题

作者: 绝对是我没错 | 来源:发表于2019-02-20 11:46 被阅读0次

项目中遇到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>

相关文章

网友评论

      本文标题:selector使用.9图的问题

      本文链接:https://www.haomeiwen.com/subject/ongcyqtx.html