首页 > 代码库 > 点击手机图库图片来获取到点击的图片

点击手机图库图片来获取到点击的图片

在学习安卓期间,都是通过写死一个url来获取一个图片,但是如何实现在没有图片url的情况下通过点击图片来获取url呢,这个问题一直困扰着笔者,今天有时间查阅网上大量资料,经过反复测试终于成功了,现将代码分享如下.由于笔者能力有限,错误之处在所难免,欢迎大家不吝指正,如本篇文章触犯了您的利益,请联系本人.谢谢!

环境:Android Studio+Genymotion

 

01.布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="www.itcast.com.testchoicepic.MainActivity">    <Button        android:id="@+id/btn_select_pic"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="选择图片" />    <ImageView        android:id="@+id/iv_show_pic"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="http://www.mamicode.com/@mipmap/ic_launcher" /></LinearLayout>

02. 主要代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private Button btn_select_pic;    private ImageView iv_show_pic;    //请求码,用来和onActivityResult中的requestCode做比较,判断是不是同一个请求    public static final int REQUEST_CODE = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        btn_select_pic = (Button) findViewById(R.id.btn_select_pic);        iv_show_pic = (ImageView) findViewById(R.id.iv_show_pic);        btn_select_pic.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_select_pic:                Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);                startActivityForResult(intent, REQUEST_CODE);                break;        }    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        //注意判断:resultCode == RESULT_OK        if (requestCode==REQUEST_CODE&&resultCode == RESULT_OK && data != null) {            Uri selectImageUrl = data.getData();            String[] filePathColumn = {MediaStore.Images.Media.DATA};            Cursor cursor = getContentResolver().query(selectImageUrl, filePathColumn, null, null, null);            cursor.moveToFirst();            String picPath = cursor.getString(cursor.getColumnIndex(filePathColumn[0]));            cursor.close();            try {                //1.使用原生的图片显示办法                Bitmap bitmap = BitmapFactory.decodeFile(picPath);               iv_show_pic.setImageBitmap(bitmap);                //2.使用第三方框架显示也可以,但是需要在app/build.gradle里面添加依赖:compile ‘com.github.bumptech.glide:glide:3.7.0‘               /* Glide                        .with(this) // 指定Context                        .load(picPath)// 指定图片的URL                        .placeholder(R.mipmap.ic_launcher)// 指定图片未成功加载前显示的图片                        .error(R.mipmap.ic_launcher)// 指定图片加载失败显示的图片                        .skipMemoryCache(true)// 跳过内存缓存                        .diskCacheStrategy(DiskCacheStrategy.NONE)//跳过磁盘缓存                        .diskCacheStrategy(DiskCacheStrategy.SOURCE)//仅仅只缓存原来的全分辨率的图像                        .diskCacheStrategy(DiskCacheStrategy.RESULT)//仅仅缓存最终的图像                        .diskCacheStrategy(DiskCacheStrategy.ALL)//缓存所有版本的图像                        .priority(Priority.HIGH)//指定优先级.Glide 将会用他们作为一个准则,并尽可能的处理这些请求,但是它不能保证所有的图片都会按照所要求的顺序加载。优先级排序:IMMEDIATE > HIGH > NORMAL > LOW                        .into(iv_show_pic);//指定显示图片的ImageView*/            } catch (Exception e) {                e.printStackTrace();            }        }    }}

03.效果图:

技术分享

 

 

点击手机图库图片来获取到点击的图片