2016-07-31 2 views
1

Я хочу контролировать горизонтальный урожай с ImageView использованием SeekBar, как представлено на этом фото:Горизонтальный урожай ImageView с помощью SeekBar (Android)

Crop controlled by a Seekbar

Это мой код для progressChanged события :

cropSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      float tuning = (float) progress/seekBar.getMax(); 

      if (tuning == 0) { 
       return; 
      } 

      int width = (int)(tuning * originalPhotoBitmap.getWidth()); 
      int height = originalPhotoBitmap.getHeight(); 

      modifiedPhotoBitmap = Bitmap.createBitmap(originalPhotoBitmap, 0, 0, width, height); 

      imageView.setImageBitmap(modifiedPhotoBitmap); 
     } 
    }); 

новая ширина рассчитывается правильно (я проверил значение в LogCat), но когда я установить растровое изображение в ImageView с setImageBitmap оказывается, что Sc aleType FIT_CENTER не работает больше ...

То, что я на самом деле получить с моим кодом заключается в следующем:

значение

Прогресс: 100

значение Progress value is 100

Прогресс: 50

Progress value is 50

Прогресс в оценке: 25

Progress value is 25

Как вы можете видеть, это не желаемое поведение ...

Мои вопросы два:

  1. Какой масштаб следует использовать в ImageView?
  2. Правильно ли определено мое новое растровое изображение?

ответ

0

1 Какой тип шкалы следует использовать в ImageView? Не уверен, если я правильно понял, но если вы хотите установить централизованный ImageView, вы должны использовать атрибут Gravity.

2- Правильно ли определено мое новое растровое изображение? I beleve the awnser here от Lumis должен помочь вам

0

Самый простой способ сделать это - не создавать новые растровые изображения - на самом деле это самый худший способ сделать это. Самый простой способ, чтобы изменить ширину представления изображения с помощью его расположения PARAMS

+0

поэтому ширина ImageView не изменит его ширина содержимого (фактическая фотография)? Ширина изображения равна ширине контейнера? – sports

0

Я надеюсь, что это помогает:

Bitmap getCroppedBitmap(Bitmap bitmap, int progress) { 
    Bitmap output = Bitmap.createBitmap(
      bitmap.getWidth(), 
      bitmap.getHeight(), 
      Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(output); 

    Paint paint = new Paint(); 
    canvas.drawRect(0, 0, bitmap.getWidth() * progress/100, bitmap.getHeight(), paint); 
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); 

    Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
    canvas.drawBitmap(bitmap, rect, rect, paint); 

    return output; 
} 

Использование так:

int progress = 70; 
imageView.setImageBitmap(getCroppedBitmap(originalPhotoBitmap, progress)); 
+0

Я сохраняю свой ImageView с FIT_CENTER? – sports

+0

Да, вы должны сохранить FIT_CENTER. – nshmura

+0

гул не работает – sports

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