2016-09-01 2 views
2

Использование библиотеки picasso-transformations для редактирования изображений. Существуют две отдельные кнопки для поворота влево и вправо. Нажатие кнопки, изображение вращается только один раз. Я хочу повернуть изображение на каждой кнопке, нажав на соответствующее направление.Поворот изображения влево/вправо под углом на кнопке

recyclerView.addOnItemTouchListener(new RecyclerClick(act, recyclerView, new RecyclerClickListener() { 
      @Override 
      public void onClick(View view, final int position) { 
       switch (position) { 
        case 0: 
         Picasso.with(act) 
           .load(selectedPhotoUri) 
           .rotate(90f) 
           .into(photo); 
         break; 
        case 1: 
         Picasso.with(act) 
           .load(selectedPhotoUri) 
           .rotate(90f) 
           .into(photo); 
         break; 
       } 
      } 
+0

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

ответ

2

Возможно, переменные экземпляра помогают.

так:

recyclerView.addOnItemTouchListener(new RecyclerClick(act, recyclerView, new RecyclerClickListener() { 

    int rotate = 0; 

    @Override 
    public void onClick(View view, final int position) { 
     switch (position) { 
      case 0: 
       rotate += 90f 
       break; 
      case 1: 
       rotate -= 90f; 
       break; 
     } 
     Picasso.with(act) 
       .load(selectedPhotoUri) 
       .rotate(rotate) 
       .into(photo); 
    } 
})); 
1
public static Image rotate(Image img, double angle) { 
double sin = Math.abs(Math.sin(Math.toRadians(angle))), 
     cos = Math.abs(Math.cos(Math.toRadians(angle))); 

int w = img.getWidth(null), h = img.getHeight(null); 

int neww = (int) Math.floor(w*cos + h*sin), 
    newh = (int) Math.floor(h*cos + w*sin); 

BufferedImage bimg = toBufferedImage(getEmptyImage(neww, newh)); 
Graphics2D g = bimg.createGraphics(); 

g.translate((neww-w)/2, (newh-h)/2); 
g.rotate(Math.toRadians(angle), w/2, h/2); 
g.drawRenderedImage(toBufferedImage(img), null); 
g.dispose(); 

return toImage(bimg); 
} 

использовать этот код, чтобы повернуть изображение .. и вызвать этот метод на кнопке мыши

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

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