首页 > 代码库 > 点击手机图库图片来获取到点击的图片
点击手机图库图片来获取到点击的图片
在学习安卓期间,都是通过写死一个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.效果图:
点击手机图库图片来获取到点击的图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。