发现好多项目要做这个功能实现上传图片,自定义用户头像等功能分享下代码吧。。
QuickContactBadge headimag;//用来显示图片的控件,你可以是imageview,textview等。。
private final String IMAGE_TYPE = "image/*";
private final int IMAGE_CODE = 0; //这里的IMAGE_CODE是自己任意定义的
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
headimag=(QuickContactBadge)findViewById(R.id.quickContactBadge_headimg);
headimag.setImageResource(R.drawable.searchheadimg);//设置默认图片
}
@Override
protected void onResume() {
super.onResume();
//单击控件进入收藏选择头像
headimag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);
getAlbum.setType(IMAGE_TYPE);
startActivityForResult(getAlbum, IMAGE_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) { //此处的 RESULT_OK 是系统自定义得一个常量
System.out.println(resultCode);
return;
}
Bitmap bm = null;
//外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口
ContentResolver resolver = getContentResolver();
//此处的用于判断接收的Activity是不是你想要的那个
if (requestCode == IMAGE_CODE) {
try {
Uri originalUri = data.getData(); //获得图片的uri
bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);//显得到bitmap图片这里开始的第二部分,获取图片的路径:
headimag.setImageBitmap(bm);//把获取到的图片添加到相框
String[] proj = {MediaStore.Images.Media.DATA};
//android多媒体数据库的封装接口
Cursor cursor = managedQuery(originalUri, proj, null, null, null);
//按我个人理解 这个是获得用户选择的图片的索引值
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
//将光标移至开头 ,这个很重要,不小心很容易引起越界
cursor.moveToFirst();
//最后根据索引值获取图片路径
String path = cursor.getString(column_index);
System.out.println(path);
}catch (IOException e) {
System.out.println(e.toString());
}
}
}
QuickContactBadge headimag;//用来显示图片的控件,你可以是imageview,textview等。。
private final String IMAGE_TYPE = "image/*";
private final int IMAGE_CODE = 0; //这里的IMAGE_CODE是自己任意定义的
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
headimag=(QuickContactBadge)findViewById(R.id.quickContactBadge_headimg);
headimag.setImageResource(R.drawable.searchheadimg);//设置默认图片
}
@Override
protected void onResume() {
super.onResume();
//单击控件进入收藏选择头像
headimag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);
getAlbum.setType(IMAGE_TYPE);
startActivityForResult(getAlbum, IMAGE_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) { //此处的 RESULT_OK 是系统自定义得一个常量
System.out.println(resultCode);
return;
}
Bitmap bm = null;
//外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口
ContentResolver resolver = getContentResolver();
//此处的用于判断接收的Activity是不是你想要的那个
if (requestCode == IMAGE_CODE) {
try {
Uri originalUri = data.getData(); //获得图片的uri
bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);//显得到bitmap图片这里开始的第二部分,获取图片的路径:
headimag.setImageBitmap(bm);//把获取到的图片添加到相框
String[] proj = {MediaStore.Images.Media.DATA};
//android多媒体数据库的封装接口
Cursor cursor = managedQuery(originalUri, proj, null, null, null);
//按我个人理解 这个是获得用户选择的图片的索引值
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
//将光标移至开头 ,这个很重要,不小心很容易引起越界
cursor.moveToFirst();
//最后根据索引值获取图片路径
String path = cursor.getString(column_index);
System.out.println(path);
}catch (IOException e) {
System.out.println(e.toString());
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货