2015-10-29 3 views
5

Есть ли возможность создать слайд-контроль изображения на Android, как тот, который существует в HTML 5?A «До и после» Сравнение слайдов изображений в Android

http://thenewcode.com/819/A-Before-And-After-Image-Comparison-Slide-Control-in-HTML5

Как я могу достичь это?

+0

Оказывается, вам просто нужно изменить значение альфа изображений при изменении значения ползунка. –

+0

Кажется, у вас должно быть 2 растровых изображения (до и после). Я бы создал пользовательское представление, которое удерживает/обрабатывает эти 2 растровые изображения и рисует их соответственно, используя 'drawBitmap (растровое изображение Bitmap, Rect src, Rect dst, Paint paint)'. –

ответ

4

Один из способов - использование кнопки поиска и рамки, которая находится поверх исходного изображения. По мере того, как вы выдвигаете направляющую, высота кадров регулируется, что содержит 2-е изображение.

Код для верхней вниз показывают

private SeekBar seekBar; 

под protected void onCreate(Bundle savedInstanceState) {

добавить

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

     seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

      int progress = 0; 

      @Override 

      public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) { 
       FrameLayout target = (FrameLayout) findViewById(R.id.target); 

       progress = progresValue; 

       ViewGroup.LayoutParams lp = target.getLayoutParams(); 
       lp.height = progress; 
       target.setLayoutParams(lp); 

      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 

      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 

      } 
     }); 

раскладку

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:showIn="@layout/activity_main" tools:context=".MainActivity"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="600dp" 
     android:layout_height="300dp" 
     android:src="@drawable/pug_color"/> 
    <FrameLayout 
     android:id="@+id/target" 
     android:layout_width="600dp" 
     android:layout_height="150dp"> 
     <ImageView 
      android:id="@+id/imageb" 
      android:layout_width="600dp" 
      android:layout_height="300dp" 
      android:layout_gravity="center_horizontal" 
      android:src="@drawable/pug_bw"/> 
    </FrameLayout> 

    <SeekBar 
     android:id="@+id/seekBar1" 
     android:layout_below="@+id/image" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:progress="300" 
     android:max="600" /> 
</RelativeLayout> 
5

Я создал library для этой функции, кто-то, кто может нуждаться в стальном этой функции, будет хорошо для них

compile 'com.github.developer--:beforeafterslider:1.0.4' 
+1

Jemo, отличная работа! Я попытался использовать ваш слайдер, это действительно здорово. Однако я обнаружил одну ошибку: когда я установил одно и то же изображение для обеих частей слайдера (до и после), кажется, что одно из изображений искажается, например, слегка приближается (извините, что написал здесь, у меня нет Github). – Lelik

+0

спасибо, я проверю как можно скорее –

+0

Это строка val tmpBitmap = getScaledBitmap (theBitmap) в ClipDrawableProcessorTask.kt Возможно, вы положили его туда, чтобы показать, что изображения разные, когда вы устанавливаете обе части ползунок к тому же изображению. Поэтому я прокомментировал это, и теперь все работает нормально. «Перед» изображение справа, «после» находится слева. Опять же, спасибо за вашу работу, действительно помогли мне много продемонстрировать некоторые эффекты обработки изображений. – Lelik

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

  • Нет связанных вопросов^_^