Android 将从用户库上载的图像传递到其他活动
我有一个注册活动,用户可以从其图库上载图像,我想将此照片传递到主活动中的导航抽屉,也传递到用户配置文件活动,但我找不到方法,注册活动代码: 注册活动代码:Android 将从用户库上载的图像传递到其他活动,android,image,gallery,Android,Image,Gallery,我有一个注册活动,用户可以从其图库上载图像,我想将此照片传递到主活动中的导航抽屉,也传递到用户配置文件活动,但我找不到方法,注册活动代码: 注册活动代码: public class RegisterActivity extends AppCompatActivity implements View.OnClickListener { de.hdodenhof.circleimageview.CircleImageView uplo; private static int RESULT_LOAD_
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
de.hdodenhof.circleimageview.CircleImageView uplo;
private static int RESULT_LOAD_IMAGE = 1;
Context ctx = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
final Button bRegister = (Button) findViewById(R.id.bRegister);
//upload profile image
uplo = (de.hdodenhof.circleimageview.CircleImageView) findViewById(R.id.uploadimage);
uplo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(
Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
bRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(RegisterActivity.this,MainActivity.class);
i.putExtra("picture", String.valueOf(uplo));
startActivity(i);
finish();
}
});
}
//to take the chosen image from user mobile gallery
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
uplo.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
一个代码示例将非常有用
谢谢发送意向书
Intent intent = new Intent(Home.this, Upload.class);
intent.putExtra("picture", thumbnail);
并在其他活动中接收
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("picture");
希望它能工作:)如果您想发送图像,只需发送路径即可。 把它改成
bRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(RegisterActivity.this,MainActivity.class);
i.putExtra("picture", picturePath);// send path
startActivity(i);
finish();
}
});
并在另一个活动中接收路径
并设置为
.setImageBitmap(BitmapFactory.decodeFile(picturePath));
如果您想访问其他活动的图片,请选择第二个
只需将路径作为USER\u DP
string放入共享首选项中。你想买什么就买什么例如
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
shared.edit().putString("USER_DP",picturePath).commit();// like this
您可以使用下面的代码将您的路径保存到共享首选项中,并可以根据需要获取路径。初始化共享首选项
SharedReferences SharedReferences=context.getSharedReferences(共享,context.MODE\u PRIVATE);
SharedPreferences.Editor=sharedPref.edit()代码>
保存路径
public void保存路径(字符串键,字符串路径){
编辑器.putString(键,路径);
commit();
}
检索特定类中的路径--
`公共字符串getPath(字符串键){
if(sharedPref.contains(key)){
}
返回“”;
}`您可以将图像路径保存在首选项中,并在不同屏幕中使用首选项中的图像路径加载图像。步骤1:使用具有内存缓存的图像加载库(毕加索、Glide等)。步骤2:将标识图像的Uri
传递给其他活动,他们可以使用相同的图像加载库加载图像,并从缓存中获取。以共享首选项保存图像路径,如果路径可用,则显示图像这会极大地浪费内存。您不仅在自己的过程中创建了位图的多个副本
,而且由于系统缓存了类似的Intent
对象,因此也不必要地占用了额外的系统RAM。此外,如果图像太大,您将得到一个失败的活页夹事务
,因为意图
及其附加项有大小限制。
String path="";
path=sharedPref.getString(key, " ");
return path;