oom*_*ler 10 android android-imageview
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
ImageView iv;
Bitmap bTemp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button cameraClick = (Button) findViewById(R.id.click);
iv = (ImageView) findViewById(R.id.imageView1);
final Bitmap data = (Bitmap) getLastNonConfigurationInstance();
if (data == null) {
iv.setImageBitmap(bTemp);
}
cameraClick.setOnClickListener(myhandler);
}
OnClickListener myhandler = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Bitmap bm = (Bitmap) data.getExtras().get("data");
iv.setImageBitmap(bm);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
@Deprecated
public Object onRetainNonConfigurationInstance() {
bTemp = iv.getDrawingCache();
return bTemp;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用imageview来存储使用Camera Intent捕获的图像,但是当屏幕旋转时图像会丢失.我尝试使用onRetainNonConfigurationInstance()但它不起作用
而且我不想把图像写成文件.
您可以通过在Manifest文件中设置orientation和screensize标志来避免重新创建活动
android:configChanges="keyboard|orientation|screenSize"
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以实现onConfigurationChanged()在方向更改时调用的内容.更多信息请访问http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange
这可能对你有所帮助......
@Override
protected void onSaveInstanceState(Bundle outState) {
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
outState.putParcelable("image", bitmap);
super.onSaveInstanceState(outState);
}
protected void onCreate(Bundle savedInstanceState) {
if(savedInstanceState != null) {
Bitmap bitmap = savedInstanceState.getParcelable("image");
imageView.setImageBitmap(bitmap);
}
}
Run Code Online (Sandbox Code Playgroud)
getLastNonConfigurationInstance()返回一个活动实例。您可以从该实例中获取以前的值:
在你的onCreate():
YourActivity prevActivity = (YourActivity) getLastNonConfigurationInstance();
if(prevActivity!= null) {
this.bTemp = prevActivity.bTemp;
}
Run Code Online (Sandbox Code Playgroud)
你的onRetainNonConfigurationInstance()方法应该是:
@Override
@Deprecated
public Object onRetainNonConfigurationInstance() {
return bTemp;
}
Run Code Online (Sandbox Code Playgroud)
你的 'onActivityResult()` 方法应该是:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
bTemp = (Bitmap) data.getExtras().get("data");
iv.setImageBitmap(bTemp);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8096 次 |
| 最近记录: |