Анимация большого пальца Seekbar при перетаскивании

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

Я имею в виду, когда я буду тянуть мой большой палец... размер большого пальца увеличится, и положение панели поиска не должно быть изменено.

Пожалуйста, помогите мне и спасибо заранее.

2 ответа

Решение

Изменение размера большого пальца панели поиска при скольжении требует некоторого кода

android:thumb="@drawable/round"

Код

private SeekBar seekBar;

в OnCreate добавлять

seekBar = (SeekBar) findViewById(R.id.mySeekBarID);

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            int progress = 0;

            @Override

            public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) {

                progress = progresValue;

                Resources res = getResources();
                Drawable thumb = res.getDrawable(R.drawable.round);
                int h = progress / 10;
                int w = h;
                Bitmap bmpOrg = ((BitmapDrawable) thumb).getBitmap();
                Bitmap bmpScaled = Bitmap.createScaledBitmap(bmpOrg, w, h, true);
                Drawable newThumb = new BitmapDrawable(res, bmpScaled);
                newThumb.setBounds(0, 0, newThumb.getIntrinsicWidth(), newThumb.getIntrinsicHeight());
                seekBar.setThumb(newThumb);

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

Проверено и работает как положено. т.е. когда вы двигаете большим пальцем, он становится меньше влево и больше вправо

Эта строка здесь int h = progress / 10;`это то, что вычисляет новый размер большого пальца при скольжении, поэтому вам нужно будет немного поиграть с математикой, чтобы получить именно тот результат, который вам нужен

Используйте селектор для бегунка большого пальца, как этот

thumb.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/thumb_small" android:state_enabled="false"/>
    <item android:drawable="@drawable/thumb_big" android:state_pressed="true"/>
    <item android:drawable="@drawable/thumb_small" android:state_selected="true"/>
    <item android:drawable="@drawable/thumb_small"/>
</selector>

и ссылаться на это в вашей панели поиска, как это ваш макет file.xml

        <SeekBar
            android:id="@+id/seekBarRadius"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:indeterminate="false"
            android:max="100"
            android:maxHeight="10dp"
            android:minHeight="10dp"
            android:progress="100"
            android:thumb="@drawable/thumb" />

thumb_big.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <corners android:radius="20dp" />
        <solid android:color="#FF049BFF" />
        <size
            android:width="40dp"
            android:height="40dp" />
    </shape>
</item>

thumb_small.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <corners android:radius="15dp" />
        <solid android:color="#FF049BFF" />
        <size
            android:width="30dp"
            android:height="30dp" />
    </shape>
</item>

Другие вопросы по тегам