上篇文章中有显示SD卡中图片的介绍,显示效果会比较炫一些,但是相对很麻烦,在此呢,我有找到另一种方法:调用系统提供方法显示SD卡内容。
效果:点击选择图片按钮,跳到另一张图片显示SD卡内的图片,在这些图片中点击任意以图片,就会显示在前段ImageView中。
1。首先定
XML,显示ImageView和Button。
<ImageView
android:id="@+id/call_image"
android:layout_width="150dip"
android:layout_height="150dip"
android:layout_below="@id/line_downcb"
android:src="@drawable/icon"
/>
<Button
android:id="@+id/call_chose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/line_downcb"
android:layout_alignTop="@id/call_image"
android:layout_alignParentRight="true"
android:text="@string/call_chosepicture"
/>
2。在Activity中定义响相应方法
public class MyPhoneText extends Activity {
private Button bt_choose;//选择图片按钮
private ImageView imageShow;//图片显示区
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.call);
findViewId();
setButtonOnClickListener(); //
监听按钮
}
public void findViewId(){
bt_choose = (Button)findViewById(R.id.call_chose);
imageShow = (ImageView)findViewById(R.id.call_image);
}
//按钮监听事件
public void setButtonOnClickListener(){
//选择图片,跳转图片浏览Activity界面
bt_choose.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Intent in = new Intent();
in.setType("image/*");
in.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(in,1);
}
});
}
public void onActivityResult(int requestCode,int resultCode,Intent data){
if(resultCode == RESULT_OK){
Uri uri = data.getData();
uri.getPath();
Log.v("MyPhoneText","path="+uri.getPath());
ContentResolver cr = this.getContentResolver();
try{
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
imageShow.setImageBitmap(bitmap);
}catch(FileNotFoundException e){
e.printStackTrace();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
此方法相对简单,唯一难点就是获取图片路径。应该是因为调用系统方法显示的时候,系统会把SD卡内的图片全部取出并且重新放在某一位置重新排列并给它们相应的序号。感兴趣的同学们可以用Log一下,看看结果。