我想根据方向旋转 ImageButtons 。但没有重新启动活动。图像应该旋转,但视图不应该。[示例:默认的相机应用程序] 有什么想法吗?我想我应该修复方向(android:screenOrientation="portrait")。
如果您旋转手机,活动将无法重建。但底部(或侧面)的图标会旋转。我怎样才能做到这一点?
示例:http ://www.youtube.com/watch?v= hT3stvtv_1c 在 00:40 - 只是图标旋转,而不是孔视图
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);
您可以使用 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;
}
如果您想在单击按钮时动态旋转图像,请全局定义
int angle; int valueangle = 0;
以及按钮 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);
}
});
我使用OrientationEventListener
并实现了该方法onOrientationChanged(int orientation)
。在我的 MainActivity 中。这是强制肖像我创建一个调用实例并开始跟踪旋转:
公共类 RotationDetector 扩展 OrientationEventListener
在我的 MainActivity 中:
mOrientationListener = new RotationDetector(this); mOrientationListener.enable();
不要忘记disable()
它,当你不再使用它时。并注意 MaliEGL 错误。