android - 从图库中获取图像并在 android studio 的另一个活动中预览它
问题描述
我想通过按下按钮来选择图库中的图像并在另一个活动中预览所选图像。
主要活动
public class MainActivity extends AppCompatActivity {
public static final int REQUEST_CODE=1234;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==REQUEST_CODE && resultCode==Activity.RESULT_OK)
{
Intent intent = new Intent(this, Main2Activity.class);
intent.putExtra("picture",REQUEST_CODE);
startActivity(intent);
}
}
public void send(View view){
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"picture"),REQUEST_CODE);
}
从此代码按钮访问图库并将其传递给 Main2Activity 。
Main2Activity
public class Main2Activity extends AppCompatActivity {
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("picture");
iv = (ImageView)findViewById(R.id.imageView);
iv.setImageBitmap(bitmap);
}
}
在这段代码中,我们可以打开图库并选择一个图像。选择图像后,它会打开第二个活动但不预览图像。如何预览图像?
解决方案
主要活动
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==REQUEST_CODE && resultCode==Activity.RESULT_OK)
{
Uri selectedImageUri = data.getData( );
Intent i= new Intent(MainActivity.this,Main2Activity.class);
i.setData(selectedImageUri);
startActivity(i);
}
}
Main2Activity
public class Main2Activity extends AppCompatActivity {
private ImageView imageView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
imageView = findViewById(R.id.img);
if(getIntent()!= null){
Uri imageUri=getIntent().getData();
imageView.setImageURI(imageUri);
}
}
}
推荐阅读
- django - 如何使用 Supervisor(包括 Gunicorn 和 Nginx)设置多个 Django 应用程序?bind() to [::]:8090 失败(98:地址已在使用中)
- laravel - 如何检测电子邮件是否未送达收件人?(Gmail SMTP,传送失败)
- javascript - 如何迭代对象数组
- fullcalendar - 我在我的 vue 应用程序中使用 2 fullcalendar,当我点击日历时,我必须点击弹出窗口两次才能关闭它
- typescript - 打字稿:无法将 parseInt() 应用于 HTTP 请求标头中的字符串
- sql - 在 SQL 中的最后两个反斜杠之间减去子字符串
- android - 我怎样才能让整个文本在edittext中可见?
- ios - 应用程序在后台时本地通知声音不播放 - Swift
- pip - Pip for Python 3.1
- postman - How to decode protobuf in Postman?