一个从相册里打开图片并显示的小程序,供给同为初学者的大家参考。
public class MainActivity extends AppCompatActivity {
private Button addPic;
private TextView imgPath;
private ImageView imageshow;
private final int ImageCode = 0;
private final String Image_Type="image/*";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inti();
}
private void inti(){
addPic = (Button) findViewById(R.id.id_bt);
imgPath = (TextView) findViewById(R.id.id_tv);
imageshow = (ImageView) findViewById(R.id.id_iv);
addPic.setOnClickListener(listener);
}
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Button btn = (Button) v;
switch (btn.getId()) {
case R.id.id_bt:
setImage();
break;
}
}
private void setImage() {
// TODO Auto-generated method stub
// 使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片的地址
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);
getAlbum.setType(Image_Type);
startActivityForResult(getAlbum, ImageCode);
}
};
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// RESULT_OK 是系统自定义得一个常量
if (resultCode != RESULT_OK) {
Log.e("onActivityResult", "返回的resultCode出错");
return;
}
Bitmap bm = null;
// 外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口
ContentResolver resolver = getContentResolver();
// 判断接收的Activity是不是选择图片的
if (requestCode == ImageCode) {
try {
// 获得图片的地址Uri
Uri originalUri = data.getData();
// 新建一个字符串数组用于存储图片地址数据。
String[] proj = { MediaStore.Images.Media.DATA };
// android系统提供的接口,用于根据uri获取数据
Cursor cursor = managedQuery(originalUri, proj, null, null,
null);
// 获得用户选择图片的索引值
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
// 将游标移至开头 ,防止引起队列越界
cursor.moveToFirst();
// 根据图片的URi生成bitmap
bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);
// 显得到bitmap图片
imageshow.setImageBitmap(bm);
imgPath.setText(cursor.getString(column_index));
} catch (IOException e) {
Log.e("getImg", e.toString());
}
}
}
}