Установка большого пальца в определенную позицию (а не смещение) программы поиска программно?

У меня есть настраиваемая панель поиска, в которой я обновляю ход и максимальную амплитуду звука. Таким образом, искатель изменяется в соответствии с обнаружением звука, а большой палец показывает максимальную амплитуду звука. Я хочу установить положение большого пальца в определенную позицию (Макс. Амплитуда), как мы устанавливаем прогресс в поисковой строке. Я прошел через множество вопросов и ответов, а также просмотрел документы разработчика. В документах разработчика упоминается, что могут быть даны только смещения, которые поддерживают большой палец с пути прогресса.

От разработчика Doc setThumbOffset (int thumbOffset) - Устанавливает смещение большого пальца, которое позволяет большому пальцу выходить из диапазона дорожки.

Можно ли установить большой палец в определенную позицию. Пример показан ниже. В этом я установил смещение больших пальцев только для показа образца, вместо этого я хочу установить большой палец на точную позицию.

enter image description here

Ответ 1

Я думаю, вы могли бы установить положение большого пальца с помощью setProgress (int progress), так как в SeekBar большой палец будет отображаться в конце индикатора выполнения.
Если вы хотите, чтобы позиция большого пальца была независимой от прогресса, тогда вы можете реализовать свой собственный SeekBar, расширяющий AbsSeekBar, вы можете обратиться к src SeekBar.

Ответ 2

Создайте пользовательский индикатор выполнения с прозрачным цветом прогресса.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/my_background"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@android:color/transparent" />
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip android:drawable="@drawable/my_visual_progress" />
    </item>

</layer-list> 

Используйте setSecondaryProgress(int) с помощью устанавливая визуальный "прогресс" индикатора выполнения.

И используйте setProgress(int) для перемещения пальца соответственно.

Ответ 3

Я не понимаю, что вы на самом деле имеете в виду, но поскольку я понимаю, что вы говорите, делайте то, что я сделал Попробуйте использовать разные drawbles Позвольте мне показать вам пример:

Ваш code .java

import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.widget.SeekBar;

public class MainActivity extends Activity {
    private SeekBar seekBar1;

    private SeekBar seekBar2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         seekBar1 = (SeekBar) findViewById(R.id.seekBar1);
         seekBar2 = (SeekBar) findViewById(R.id.seekBar2);
         seekBar1.setProgress(15);
         seekBar2.setProgress(55);
         Drawable ii = getResources().getDrawable(R.drawable.ii);
        // Drawable iii = getResources().getDrawable(R.drawable.ii);
         seekBar1.setThumb(ii);
         seekBar2.setThumb(ii);

    }



}

Ваша проблема:

enter image description here

Что вы можете сделать, это simple просто переименовать одно и то же drawable, как это:

import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.widget.SeekBar;

public class MainActivity extends Activity {
    private SeekBar seekBar1;

    private SeekBar seekBar2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         seekBar1 = (SeekBar) findViewById(R.id.seekBar1);
         seekBar2 = (SeekBar) findViewById(R.id.seekBar2);
         seekBar1.setProgress(15);
         seekBar2.setProgress(55);
         Drawable ii = getResources().getDrawable(R.drawable.ii);
         Drawable iii = getResources().getDrawable(R.drawable.ii);
         seekBar1.setThumb(ii);
         seekBar2.setThumb(iii);

    }
}

И что результат:

enter image description here