Android旋转图像

时间:2012-09-18 14:21:23

标签: android rotation

我想在方向上旋转ImageButtons depand。但没有重新启动活动。图像应该旋转,但视图不应该旋转。 [例如:默认的相机应用]任何想法?我想我应该修改方向(android:screenOrientation =" portrait")。

如果您旋转手机,活动将无法重建。但是底部(或侧面)的图标会旋转。我怎么能这样做?

示例http://www.youtube.com/watch?v=hT3stvtv_1c在00:40 - 只是图标旋转,而不是洞视图

4 个答案:

答案 0 :(得分:5)

Matrix matrix = new Matrix();
Bitmap b;
//...
imageView.setImageBitmap(b);
//...
// screen rotation
matrix.postRotate(90);
b = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), matrix, true);
imageView.setImageBitmap(b);

答案 1 :(得分:4)

您可以使用ExifInterface

从文件中获取旋转信息
Matrix matrix = new Matrix();
    int orientation = 1;
    try {
        ExifInterface exif = new ExifInterface(filePath);
        orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
    } catch (IOException e) {
        e.printStackTrace();
    }
    matrix.setRotate(0);
    switch (orientation) {
    case ExifInterface.ORIENTATION_ROTATE_90:
        matrix.setRotate(ROTATION_DEGREE);
        break;
    case ExifInterface.ORIENTATION_ROTATE_180:

        matrix.setRotate(ROTATION_DEGREE * 2);
        break;
    case ExifInterface.ORIENTATION_ROTATE_270:
        matrix.setRotate(-ROTATION_DEGREE);
        break;
    default:
        break;
    }

答案 2 :(得分:1)

如果您希望动态旋转图像,请单击全局按钮

     int angle; int valueangle = 0; 

并使用onclick按钮         mrotate.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {

            // TODO Auto-generated method stub
     ImageView mainimage22 = (ImageView) findViewById(R.id.mainimage22);
     Bitmap myImg = BitmapFactory.decodeResource(getResources(), R.drawable.image);

            angle = valueangle + 90;
            valueangle = angle;
            System.out.println("valueangle"+valueangle);
            if(valueangle == 360){
                valueangle=0;
                System.out.println("00"+valueangle);
            }
            System.out.println("angle"+angle);

            main_img.setVisibility(View.INVISIBLE);

            Matrix matrix = new Matrix();
            matrix.postRotate(angle);

            Bitmap rotated = Bitmap.createBitmap(myImg , 0, 0,
                    myImg .getWidth(), myImg .getHeight(), matrix, true);


            mainimage22.setImageBitmap(rotated);

        }
    });

答案 3 :(得分:0)

我使用了OrientationEventListener并实施了方法onOrientationChanged(int orientation)。在我的MainActivity中。这是强制成为肖像我创建一个调用实例并开始跟踪旋转:

  

public class RotationDetector扩展OrientationEventListener

在我的MainActivity中:

  

mOrientationListener = new RotationDetector(this);   mOrientationListener.enable();

当你不再使用它时,别忘了disable()它。并注意MaliEGL错误。