這次要來教如何使用 Intent透過手機內部的圖片來修改ImageView。
先簡單設計出一個頁面,寫出一個Button作為觸發Intent的元件,並寫出一個ImageView來顯示圖片就好。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="選取圖片"/>
</RelativeLayout>
設計好XML之後,就能開始製作選取照片的功能了。
先做好按鈕的監聽器,接著在觸發功能輸入以下程式碼:Intent picker = new Intent(Intent.ACTION_GET_CONTENT);
透過參數Intent.ACTION_GET_CONTENT來開啟檔案選擇器picker.setType("image/*");
用.setType()將所需的檔案格式輸入到參數中藉此來過濾檔案
startActivityForResult(picker, READ_REQUEST_CODE);
執行檔案選取並將結果傳遞到onActivityResult,READ_REQUEST_CODE要求代碼,是使用者設定的整數引數,接收Intent結果時,會回傳同一要求代碼,以便識別是哪一個Intent回傳的結果。
public void onActivityResult()
接收選取後的結果並以.getData()來取得內容,之後再根據使用者的需求來決定要做甚麼處理。
到了onActivityResult()裡面以Uri來接受被選取的圖片位置,然後再以imageView.setImageURI(selectedImage);來顯示圖片就完成了
public class MainActivity extends AppCompatActivity {
Button button;
ImageView imageView;
int READ_REQUEST_CODE = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
button = findViewById(R.id.button);
//指定監聽的物件
button.setOnClickListener(listener);
}
//監聽器
Button.OnClickListener listener= new Button.OnClickListener() {
@Override
public void onClick(View v) {
Intent picker = new Intent(Intent.ACTION_GET_CONTENT);
picker.setType("image/*");
startActivityForResult(picker, READ_REQUEST_CODE);
}
};
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
super.onActivityResult(requestCode, resultCode, resultData);
if (requestCode == READ_REQUEST_CODE && resultCode == RESULT_OK) {
Uri selectedImage = resultData.getData();
imageView.setImageURI(selectedImage);
}
}
}