只旋转一次图像。在菜单项列表中多次选择旋转选项时如何再次旋转?

rotates image just once. how to rotate again when selected rotate option multiple times in menu item list?

public void Rotate(View v)
{
    ImageView img = (ImageView)findViewById(R.id.imageView1);
    Bitmap bmp = BitmapFactory.decodeResource(getResources(),arr[current]);

 // Getting width & height of the given image.
    int w = bmp.getWidth();
    int h = bmp.getHeight();
 // Setting pre rotate to 90
    Matrix mtx = new Matrix();
    mtx.preRotate(90);
 // Rotating Bitmap
    Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
    BitmapDrawable bmd = new BitmapDrawable(rotatedBMP);
    img.setImageBitmap(rotatedBMP);
}

当我 select 旋转菜单中的选项时,它只会在第一次旋转时再次 select 它,图像不会旋转。任何解决方案

我只是用了简单的数学。

public void Rotate_r(View v)
{
    rcount++;
    if(rdgr==360) rdgr=90;
    else rdgr=rdgr+90;
    if(rcount==1){
        ldgr=rdgr;
        rcount--;
    }
    ImageView img = (ImageView)findViewById(iv);
    Bitmap bmp =BitmapFactory.decodeResource(getResources(),arr[current]);
    // Getting width & height of the given image.
    int w = bmp.getWidth();
    int h = bmp.getHeight();
    // Setting pre rotate to 90
    Matrix mtx = new Matrix();
    mtx.preRotate(rdgr);
    // Rotating Bitmap
    Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
    @SuppressWarnings("deprecation")
    BitmapDrawable bmd = new BitmapDrawable(rotatedBMP);
    img.setImageBitmap(rotatedBMP);
}

我使用了一个计数器rcount,如果图像向右旋转它会简单地递增,如果它向左旋转则递减。变量 rdgr 也被初始化为 90 作为 rdgr=90 并且当 rcount 递增时它向 rdgr 添加 90 并绘制图像。

实际上,它每次都会将您的位图旋转 90 度。问题是您总是从资源中获得相同(未旋转)的位图,而不是已经从您的 ImageView 中旋转。

而不是:

BitmapFactory.decodeResource(getResources(),arr[current]);

试试这个:

Bitmap bmp = ((BitmapDrawable)img.getDrawable()).getBitmap();

这个解决方案也更好,因为您不需要每次都从资源中解码位图。