Intereting Posts
Предотвратить onPause из разбиения контекста OpenGL Отсутствует звонок, чтобы отменить регистрацию получателя HapticFeedbackBroadcastReceiver, который я никогда не регистрировал Построение приложения Ionic не удалось из-за Crosswalk Android EditText AutoFocus для следующего EditText, когда на maxlength Ошибка раздувания фрагмента класса Точное моделирование нажатия клавиш в Javascript Я могу изменить внешний вид кликабельности Как предотвратить двойной запуск кода, дважды щелкнув по кнопке в Android Как отключить панель состояния / панель уведомлений на андроиде программно? При вызове Games.Achievements.unlock не отображается всплывающая подсказка Используя ADT и менеджер SDK, присоедините исходный код Android для затмения Получить PID процесса, чтобы убить его, не зная его полного имени Повторять сигналы тревоги в каждый понедельник в Android usig AlarmManager / BroadcastReceiver MPAndroidChart LineChart настраивает выделение выделения Файл Project.properties вместо файла default.properties

Как нарисовать круг с секционированным в android?

Я хочу нарисовать этот тип круга в своем приложении. Я могу рисовать круг с помощью Canvas, но я не могу понять, как сделать секционированный?

Может ли кто-нибудь предложить мне, как я могу сделать разбитый круг?

Введите описание изображения здесь

Изменить: – Я хочу нарисовать линию, которая находится внутри круга.

Введите описание изображения здесь

Заранее спасибо.

Solutions Collecting From Web of "Как нарисовать круг с секционированным в android?"

Вот рабочий код для вашего требования ….

Редактирование кода: –

Paint paint1 = new Paint(); Paint paint2 = new Paint(); Paint paint3 = new Paint(); Paint paint4 = new Paint(); Paint paint5 = new Paint(); final RectF rect = new RectF(); int mRadius = 130; //Example values rect.set(getWidth()/2- mRadius, getHeight()/2 - mRadius, getWidth()/2 + mRadius, getHeight()/2 + mRadius); paint1.setColor(Color.GREEN); paint1.setStrokeWidth(mRadius/2); paint1.setAntiAlias(true); paint1.setStrokeCap(Paint.Cap.BUTT); paint1.setStyle(Paint.Style.STROKE); paint2.setColor(Color.RED); paint2.setStrokeWidth(mRadius/2); paint2.setAntiAlias(true); paint2.setStrokeCap(Paint.Cap.BUTT); paint2.setStyle(Paint.Style.STROKE); paint3.setColor(Color.BLUE); paint3.setStrokeWidth(5); paint3.setAntiAlias(true); paint3.setStrokeCap(Paint.Cap.BUTT); paint3.setStyle(Paint.Style.STROKE); canvas.drawArc(rect, 0, 60, false, paint1); canvas.drawArc(rect, 60, 60, false, paint2); canvas.drawArc(rect, 120, 60, false, paint1); canvas.drawArc(rect, 180, 60, false, paint2); canvas.drawArc(rect, 240, 60, false, paint1); canvas.drawArc(rect, 300, 60, false, paint2); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2-mRadius/2, getHeight()/2-mRadius/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2+mRadius/2, getHeight()/2-mRadius/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2-mRadius/2, getHeight()/2+mRadius/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2+mRadius/2, getHeight()/2+mRadius/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2-mRadius/4-mRadius/2, getHeight()/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2+mRadius/4+mRadius/2, getHeight()/2,paint3); paint4.setColor(Color.BLACK); canvas.drawCircle(getWidth()/2, getHeight()/2, mRadius/2, paint4); paint5.setColor(Color.YELLOW); paint5.setStrokeWidth(3); paint5.setAntiAlias(true); paint5.setStrokeCap(Paint.Cap.BUTT); paint5.setStyle(Paint.Style.STROKE); canvas.drawCircle(getWidth()/2, getHeight()/2, mRadius/2, paint5); 

Надеюсь, теперь ты будешь отвечать моим ответом ….

У меня есть идея сначала нарисовать внутри круга с использованием раздела

  can.drawArc(oval, startAngle, sweepAngle, useCenter, paint) 

Возьмите значение угла, равное 0 t0 60, а затем снова нарисуйте другую дугу с тем же значением угла поворота центра от 60 до 120 и так далее. Каждое время задает другой цвет в Paint. После завершения внутреннего круга почти вся работа выполнена. Теперь нарисуйте белый Круг с таким же центром, но с небольшим радиусом после первого круга.

Надеюсь, это поможет вам 🙂

Вы можете получить ссылку отсюда . Почти такой же вопрос доступен на сайте …

Привет, я нашел решение моего запроса,

 final RectF rect1 = new RectF(); int mWidth = this.getWidth()/2; int mHeight = this.getHeight()/2; int mRadius = 130, mRadius1 = 50; rect1.set(mWidth -(mRadius-mRadius1), mHeight - (mRadius-mRadius1), mWidth + (mRadius-mRadius1), mHeight + (mRadius-mRadius1)); Paint paintLines = new Paint(); paintLines.setColor(Color.BLACK); paintLines.setStrokeWidth((mRadius-mRadius1)/2); paintLines.setAntiAlias(false); paintLines.setStrokeCap(Paint.Cap.BUTT); paintLines.setStyle(Paint.Style.STROKE); canvas.drawArc(rect1, 0, 1, false, paintLines); canvas.drawArc(rect1, 30, 1, false, paintLines); canvas.drawArc(rect1, 60, 1, false, paintLines); canvas.drawArc(rect1, 90, 1, false, paintLines); canvas.drawArc(rect1, 120, 1, false, paintLines); canvas.drawArc(rect1, 150, 1, false, paintLines);