Я разрабатывал приложение эквалайзера, и мне нужно создать вертикальную seekbar
, которая начинается с середины. Я искал несколько вертикальных панелей поиска, но onDraw предназначен для поисковых панелей, которые начинаются снизу и поднимаются вверх. Мне нужно изменить onDraw
, чтобы seekbar
начинался с середины, а большой палец хода двигался в любую сторону.
Я попытался изменить этот код для horizontal seekbar
, как это
но мне нужна вертикальная версия этого и не уверен, как изменить метод onDraw()
. Прикрепленный код предназначен для горизонтальной версии панели поиска, которую я пытаюсь изменить. Может кто-нибудь подсказать мне, как работать с rect.set()
, чтобы создавать собственные представления или предоставить рабочую версию.
private int seekbar_height = 6;
@Override
protected synchronized void onDraw(Canvas canvas) {
rect.set(getThumbOffset(),
(getHeight() / 2) - (seekbar_height / 2),
getWidth() - getThumbOffset(),
(getHeight() / 2) + (seekbar_height / 2));
paint.setColor(Color.GRAY);
canvas.drawRect(rect, paint);
if (this.getProgress() > 13) {
rect.set(getWidth() / 2,
(getHeight() / 2) - (seekbar_height / 2),
getWidth() / 2 + (getWidth() / 26) * (getProgress() - 13),
getHeight() / 2 + (seekbar_height / 2));
paint.setColor(ContextCompat.getColor(getContext(),R.color.color_polestar_accept));
canvas.drawRect(rect, paint);
}
if (this.getProgress() < 13) {
rect.set(getWidth() / 2 - ((getWidth() / 26) * (13 - getProgress())),
(getHeight() / 2) - (seekbar_height / 2),
getWidth() / 2,
getHeight() / 2 + (seekbar_height / 2));
paint.setColor(ContextCompat.getColor(getContext(),R.color.color_polestar_accept));
canvas.drawRect(rect, paint);
}
super.onDraw(canvas);
}