setShadowLayer Android API 差异

2024-05-06

我为我的应用程序开发了一个自定义视图组件,并且正在努力向圆圈添加阴影。

这是我的类扩展 View 的代码

public class ChartView extends View {


    public ChartView(Context context, AttributeSet attributeSet){
        super(context, attributeSet);
        init();


    }
    Paint paint;
    public void init(){
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.WHITE);
        paint.setStyle(Paint.Style.FILL);
        paint.setShadowLayer(30, 0, 0, Color.RED);

    }
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawCircle(getWidth()/2, getHeight()/2,50, paint);
    }
}

但是,我注意到根据 API,对 ShadowLayer 有很大的影响。

这是输出

<uses-sdk android:targetSdkVersion="13"/>

这是输出

<uses-sdk android:targetSdkVersion="14"/> //Higher target API yields the same output.

知道如何克服这种不良行为吗?


setShadowLayer()仅当硬件加速打开时才支持文本。硬件加速默认开启targetSdk=14或更高。一个简单的解决方法是将视图放在软件层中:myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setShadowLayer Android API 差异 的相关文章

随机推荐