2012-06-13 2 views
0

я все еще работаю на кусок кода, я хочу, чтобы повернуть изображение по часовой стрелке и против часовой стрелки, используя кнопки, я попытался следующий код:Поворот изображения OnClick вопрос

case (R.id.clock): 
      matrix.postRotate(90); 
      matrix.postRotate(getDegreesFromRadians(angle), mid.x, mid.y); 

     break; 

     case (R.id.anticlock): 
      float degrees = 0; 
      degrees = degrees-10; 
      matrix.postRotate(degrees); 
      break; 

он работает, но не надлежащим образом, сначала я должен нажать кнопку, затем нажмите на изображение, чтобы повернуть изображение. Любая помощь?

я задал вопрос здесь Android Rotate image ontouch , но теперь я хочу его с помощью кнопок

+0

этот код является неполным. Что произошло в 'imageview.setOnclickListener()'? – ariefbayu

+0

@ariefbayu вы можете найти мои обновленные ans, я упомянул ссылку – Numair

+0

, если это так, вы называете 'view.setImageMatrix (matrix);' нажатием кнопки? – ariefbayu

ответ

2

Это то, что я обычно делаю. Я создаю статический класс Util с помощью этого метода:

public static Bitmap rotate(Bitmap bitmap, int degree) { 
    int w = bitmap.getWidth(); 
    int h = bitmap.getHeight(); 

    Matrix mtx = new Matrix(); 
    mtx.postRotate(degree); 

    return Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, true); 
} 

, а затем, я использую его так:

case 21: // ROTATE LEFT 
    ImageProcessActivity.processedBitmap = ImageUtil.rotate(ImageProcessActivity.processedBitmap, -90); 
    d = new BitmapDrawable(ImageProcessActivity.processedBitmap); 
    ImageProcessActivity.selectedImage.setImageDrawable(d); 

break; 
case 22: // ROTATE RIGHT 
    ImageProcessActivity.processedBitmap = ImageUtil.rotate(ImageProcessActivity.processedBitmap, 90); 
    d = new BitmapDrawable(ImageProcessActivity.processedBitmap); 
    ImageProcessActivity.selectedImage.setImageDrawable(d); 
break; 

Вы видите, в моем коде, я отделить изображение, которое отображается с ImageView , Таким образом, я могу легко манипулировать изображением без hasle ImageView. ImageView, как видно из названия, предназначен только для просмотра изображения. Не источник для манипуляции.

+0

он работал наконец, спасибо – Numair

0

Вы должны уведомить меня об изменении вашего вида, чтобы андроид отображал его. Представления не FrameRate оказывается, так что, как это после замены матрицы:

yourView.invalidate(); 

Должно работать

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