You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Paint.setBlendMode崩溃问题求助

问题原因

这个崩溃的根源很直接:BlendMode类是**Android 10(API Level 29)**才新增的系统API,你的LG V10系统版本应该低于API29(比如Android 7.0/7.1,对应API24/25),运行时系统找不到这个类,就触发了NoClassDefFoundError。而OnePlus 6T的系统版本至少是Android 10,所以能正常识别这个类。

解决方案

我给你两个可行的处理方案,按需选择:

方案一:兼容低版本的替代实现(推荐)

在API29之前,Android是用PorterDuff.Mode来设置Paint的混合模式的,和BlendMode中的对应模式效果一致。你只需要做个系统版本判断,分别调用对应API即可:

Paint paint = new Paint();
paint.setColor(Color.YELLOW);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // Q对应API29
    paint.setBlendMode(BlendMode.MULTIPLY);
} else {
    // 低版本用旧的Xfermode实现,效果和Multiply一致
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));
}

这样修改后,低版本设备会走旧API,高版本走新API,既能保留高亮效果,又不会崩溃。

方案二:升级最低兼容版本(不推荐,除非你放弃低版本用户)

如果你的应用不需要兼容API29以下的设备,可以直接把build.gradle里的minSdkVersion改成29:

defaultConfig {
    // ...其他配置
    minSdkVersion 29
    // ...其他配置
}

但这个方案会让你的应用无法安装到API28及以下的设备上,所以一般不推荐。

补充说明

PorterDuff.Mode.MULTIPLY和BlendMode.MULTIPLY的混合效果是完全一致的,只是API版本不同,替换后你的文本高亮效果不会有任何变化。

内容的提问来源于stack exchange,提问作者Herman Hansson Söderlund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 11:57:27