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