ImageView裁剪图像在改变方向时消失
ImageView crop image disappear when change orientation
我有一个 activity,我可以在其中拍照、裁剪图像,然后显示裁剪后的图像。这是我的代码。
public class MainActivity extends Activity {
private static final int TakePicture = 1;
ImageView imgview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgview = (ImageView) findViewById(R.id.imageView1);
Button buttonCamera = (Button) findViewById(R.id.btn_take_camera);
buttonCamera.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// call android default camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());
// ******** code for crop image
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 0);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 150);
try {
intent.putExtra("return-data", true);
startActivityForResult(intent, TakePicture);
} catch (ActivityNotFoundException e) {
// Do nothing for now
}
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bundle extras = data.getExtras();
if (extras != null) {
Bitmap photo = extras.getParcelable("data");
imgview.setImageBitmap(photo);
}
}
}
当我将方向从纵向更改为横向时,位图中设置的图像将消失。有没有一种方法可以保存图像的当前状态,即使方向从横向更改为纵向或反之亦然?
您没有保存应用程序当前状态的方法。使用 onSaveInstanceState
以保存。您可以在这里找到关于 activity 和保存值的所有信息:http://developer.android.com/reference/android/app/Activity.html
亲切的问候
我添加了保存应用程序当前状态的方法。
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
image = savedInstanceState.getParcelable("BitmapImage");
this.photo = image;
imageView.setImageBitmap(photo);
super.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onSaveInstanceState (Bundle savedInstanceState) {
savedInstanceState.putParcelable("BitmapImage", photo);
super.onSaveInstanceState(savedInstanceState);
}
我希望这会对其他人有所帮助..
我有一个 activity,我可以在其中拍照、裁剪图像,然后显示裁剪后的图像。这是我的代码。
public class MainActivity extends Activity {
private static final int TakePicture = 1;
ImageView imgview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgview = (ImageView) findViewById(R.id.imageView1);
Button buttonCamera = (Button) findViewById(R.id.btn_take_camera);
buttonCamera.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// call android default camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());
// ******** code for crop image
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 0);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 150);
try {
intent.putExtra("return-data", true);
startActivityForResult(intent, TakePicture);
} catch (ActivityNotFoundException e) {
// Do nothing for now
}
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bundle extras = data.getExtras();
if (extras != null) {
Bitmap photo = extras.getParcelable("data");
imgview.setImageBitmap(photo);
}
}
}
当我将方向从纵向更改为横向时,位图中设置的图像将消失。有没有一种方法可以保存图像的当前状态,即使方向从横向更改为纵向或反之亦然?
您没有保存应用程序当前状态的方法。使用 onSaveInstanceState
以保存。您可以在这里找到关于 activity 和保存值的所有信息:http://developer.android.com/reference/android/app/Activity.html
亲切的问候
我添加了保存应用程序当前状态的方法。
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
image = savedInstanceState.getParcelable("BitmapImage");
this.photo = image;
imageView.setImageBitmap(photo);
super.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onSaveInstanceState (Bundle savedInstanceState) {
savedInstanceState.putParcelable("BitmapImage", photo);
super.onSaveInstanceState(savedInstanceState);
}
我希望这会对其他人有所帮助..