在Android中画一个分段圆:OpenGL vs Cavans?

在Android中画一个分段圆:OpenGL vs Cavans?,android,opengl-es,android-canvas,Android,Opengl Es,Android Canvas,我需要画这样的东西: 我希望他能发布一些代码,说明他是如何开始画分段圆圈的,可惜他没有 我还需要知道在与轮子交互后哪个部分在哪里-例如,如果轮子旋转,我需要知道旋转动作后原始部分在哪里 两个问题: 我是使用OpenGL还是使用AndroidCanvas绘制这个分段圆圈(在分段上放置不同的颜色和内容) 使用这两个选项中的任何一个,我如何注册哪个段在哪里 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 编辑: 好的,我已经知道了如何使用Canvas(我将把

我需要画这样的东西:

我希望他能发布一些代码,说明他是如何开始画分段圆圈的,可惜他没有

我还需要知道在与轮子交互后哪个部分在哪里-例如,如果轮子旋转,我需要知道旋转动作后原始部分在哪里

两个问题:

  • 我是使用OpenGL还是使用AndroidCanvas绘制这个分段圆圈(在分段上放置不同的颜色和内容)
  • 使用这两个选项中的任何一个,我如何注册哪个段在哪里
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    编辑:

    好的,我已经知道了如何使用
    Canvas
    (我将把代码作为答案发布)。我相信我很快就会知道如何旋转这个圆。但我仍然不确定如何识别旋转动作后绘制的车轮的单独部分

    因为,我想做的是用这些楔子画一个分段的圆,当我想旋转它时,把整个
    Canvas
    当作
    ImageView
    来处理。但是,当旋转停止时,如何区分在
    画布上绘制的原始段

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    我读过关于如何绘制a(),甚至,但我还没有看到有人解释如何识别单独的片段

    可以或可能被使用

    如果我使用OpenGL,我可能能够旋转分段的轮子,对吗


    我也知道OpenGL对于我想做的事情来说太强大了,所以我应该考虑一下“”?/P> < P>这是我第一个问题的答案——如何使用安卓<代码>画布< /代码>: 使用,我在

    onDraw
    函数中执行此操作:

        // Starting values
        private int startAngle = 0;
        private int numberOfSegments = 11;
        private int sweepAngle = 360 / numberOfSegments;
    
        @Override
        protected void onDraw(Canvas canvas) {
    
            setUpPaint();
    
            setUpDrawingArea();
    
            colours = getColours();
    
            Log.d(TAG, "Draw the segmented circle");
            for (int i = 0; i < numberOfSegments; i++) {
    
                // pick a colour that is not the previous colour
                paint.setColor(colours.get(pickRandomColour()));
    
                // Draw arc
                canvas.drawArc(rectF, startAngle, sweepAngle, true, paint);
    
                // Set variable values
                startAngle -= sweepAngle;
            }
        }
    
    这(以及其他非常直接的函数,所以我不打算在这里粘贴代码)得出以下结论: 每次跑步时,各部分的颜色都不同

    private void setUpDrawingArea() {
            Log.d(TAG, "Set up drawing area.");
    
            // First get the screen dimensions
            Point size = new Point();
    
            Display display = DrawArcActivity.this.getWindowManager().getDefaultDisplay();
            display.getSize(size);
            int width = size.x;
            int height = size.y;
    
            Log.d(TAG, "Screen size = "+width+" x "+height);
    
            // Set up the padding
            int paddingLeft = (int) DrawArcActivity.this.getResources().getDimension(R.dimen.padding_large);
            int paddingTop = (int) DrawArcActivity.this.getResources().getDimension(R.dimen.padding_large);
            int paddingRight = (int) DrawArcActivity.this.getResources().getDimension(R.dimen.padding_large);
            int paddingBottom = (int) DrawArcActivity.this.getResources().getDimension(R.dimen.padding_large);
    
            // Then get the left, top, right and bottom Xs and Ys for the rectangle we're going to draw in
            int left = 0 + paddingLeft;
            int top = 0 + paddingTop;
            int right = width - paddingRight;
            int bottom = width - paddingBottom;
    
            Log.d(TAG, "Rectangle placement -> left = "+left+", top = "+top+", right = "+right+", bottom = "+bottom);
    
            rectF = new RectF(left, top, right, bottom);
        }