Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 阴影仅在外部曲线上_Android_Android Canvas - Fatal编程技术网

Android 阴影仅在外部曲线上

Android 阴影仅在外部曲线上,android,android-canvas,Android,Android Canvas,我的目标是创建类似于饼图的东西,但我不能完全正确地进行阴影处理。我希望阴影正好位于每个线段的外曲线上,而不是指向中心的直线上。除了编写类似于paint.setShadowLayer()的自定义函数之外,还有什么方法可以实现这一点吗? 这就是我到目前为止所做的: float mStart = 0; RectF mOvals = new RectF(mWidth / 15 + mGraphParams.leftMargin, mHeight / 15 + mGraph

我的目标是创建类似于饼图的东西,但我不能完全正确地进行阴影处理。我希望阴影正好位于每个线段的外曲线上,而不是指向中心的直线上。除了编写类似于
paint.setShadowLayer()
的自定义函数之外,还有什么方法可以实现这一点吗?
这就是我到目前为止所做的:

        float mStart = 0;
        RectF mOvals = new RectF(mWidth / 15 + mGraphParams.leftMargin, mHeight / 15 + mGraphParams.topMargin,
                mWidth - mWidth / 15 - mGraphParams.rightMargin, mHeight - mHeight / 15 - mGraphParams.bottomMargin);
        float max = 0;
        for (int i = 0; i < data.size(); i++) {
            max = max + data.get(i);
        }

        for (int i = 0; i < data.size(); i++) {
            if (shadow) {
                paint.setShadowLayer(shadowRadius, shadowDx, shadowDy, this.pieColors.get(i));
            }
            float mSweep = (float) 360 * ((float) data.get(i) / max);
            paint.setStyle(Style.FILL_AND_STROKE);
            paint.setColor(this.pieColors.get(i));
            canvas.drawArc(mOvals, mStart, mSweep, true, paint);

            mStart = mStart + mSweep;
float mStart=0;
RectF mOvals=新的RectF(mWidth/15+mGraphParams.leftMargin,mHeight/15+mGraphParams.topMargin,
mWidth-mWidth/15-mGraphParams.rightsmargin,mHeight-mHeight/15-mGraphParams.bottomMargin);
浮动最大值=0;
对于(int i=0;i
这是不可行的

您必须重写
setShadowLayer()

对不起