Я пытаюсь реализовать пользовательский SeekBar, расширив AppCompatSeekBar. Мое намерение состоит в том, чтобы нарисовать некоторые элементы над большим пальцем. Я попытался получить оценки большого пальца для этого, но это неточно в первой ничьей.Обычная панель поиска Android: не удается получить точное положение большого пальца в методе OnDraw
Вот что я делаю на моем OnDraw метод:
protected void onDraw(Canvas canvas) {
/*Rotates the seekbar, as I need it to be vertical*/
canvas.rotate(-90);
canvas.translate(-getHeight(), 0);
super.onDraw(canvas);
canvas.save();
Paint paint = new Paint();
paint.setColor(ContextCompat.getColor(getContext(),R.color.accent));
paint.setStrokeWidth(2);
paint.setStyle(Paint.Style.STROKE);
Rect thumbBounds = this.getThumb().getBounds();
int offset = getThumbOffset();
Log.d(TAG,"ThumbOffset:"+offset+ " RectX:" + thumbBounds.centerX());
thumbBounds.offset(offset,0);
canvas.drawRect(thumbBounds, paint);
canvas.drawText(Integer.toString(getProgress()),thumbBounds.centerY(),-thumbBounds.centerX(),textPaint);
canvas.restore();
}
В первый раз он загружает, выглядит следующим образом (неправильно)
После того как я перетащить пальцем вокруг, выглядит следующим образом (исправить):
Кроме того, если я минимизировать свою деятельность несколько раз, границы сходят с ума:
Таким образом, я предполагаю, что получаю в анимацию несколько фреймов нескольких кадров. Мой вопрос: как я могу это компенсировать?
Благодаря