點擊手機圖庫圖片來擷取到點擊的圖片

來源:互聯網
上載者:User

標籤:

在學習安卓期間,都是通過寫死一個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="@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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.