2016-01-19 3 views
1

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

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

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

+0

так что у вас есть изображение, и вы хотите изменить его размер при перемещении стрелки? – Tasos

+0

yes @Tasos Я ищу это :) – Newts

+0

@Newts - мой ответ полезный –

ответ

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; `это то, что вычисляет новый размер большого пальца во время скольжения, поэтому вам нужно будет поиграть с некоторой математикой, чтобы получить точный результат вам нужен

+0

Я использую layerdrawable для большого пальца.так что не умеет вставлять в растровое изображение :( – Newts

+0

@Newts - вы можете преобразовать его в растровое изображение - http://stackoverflow.com/questions/15805060/how-to-convert-the-layerdrawable-to-drawable-in- android – Tasos

+0

Я конвертировал ... но он стал очень маленьким, и некоторое время его тоже не правильно. Некоторое время поиск в баре невидим. – Newts

1

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

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> 

и ссылки этого в вашем SeekBar как этот ваш макет 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> 

+0

Нет, я уже пробовал это ... но я хочу, чтобы он перетаскивал. – Newts

+0

@Newts (состояние перетаскивания = когда нажато ваше состояние большого пальца), который я включил в селектор. Думаю, вы должны дать ему попробовать –

+0

его увеличивающийся размер искателя при перетаскивании :( – Newts

Смежные вопросы