Главная » Выбираем изображение из галереи с помощью Intent.ACTION_PICK | |
Во многих приложениях часто встречается потребность выбрать некоторое изображение или фото, например, для настройки своего профиля или аккаунта в Android приложении. Самым простым решением для реализации этой функции приложения является вызов стандартного приложения галереи и выбор изображения оттуда. Сегодня мы научимся интегрировать эту функцию в свое Android приложение. Чтобы вызвать стандартную галерею и получить из нее изображение в свое приложение, необходимо использовать Intent.ACTION_PICK. Это действие встроено в стандартные возможности Android и помогает делать выбор изображения из имеющихся на устройстве. Нам всего лишь нужно получить данные об изображении, а точнее его URI, которую мы потом преобразуем в Bitmap объект и отобразим в обычном ImageView. Начнем. Создадим новое приложение, выбираем Blank Activity, минимальная версия Android 2.2+. Для начало создадим интерфейс своего приложения. Открываем файл activity_main.xml и добавляем в него элементы ImageView и Button:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".ImagePickerActivity" >
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxHeight="200dp"
android:layout_gravity="center"
android:src="@drawable/ic_launcher" />
<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="Выбрать изображение" />
</LinearLayout>
Кнопка Button нужна для того, чтобы вызвать стандартную галерею, а в элементе ImageView будет отображаться выбранное изображение. Теперь перейдем к работе с кодом. Как уже упоминалось в начале, мы создадим Intent намерение для открытия галереи (Intent.ACTION_PICK), которое будет запускаться при нажатии на кнопку Buton, далее после выбора пользователем изображения с галереи мы получаем ее URI ссылку и преобразуем ее в объект Bitmap, а далее отображаем полученное изображение в элементе ImageView. Открываем файл MainActivity.java и добавляем туда следующий код:
import java.io.FileNotFoundException;
import java.io.InputStream;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
//Объявляем используемые переменные:
private ImageView imageView;
private final int Pick_image = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Связываемся с нашим ImageView:
imageView = (ImageView)findViewById(R.id.imageView);
//Связываемся с нашей кнопкой Button:
Button PickImage = (Button) findViewById(R.id.button);
//Настраиваем для нее обработчик нажатий OnClickListener:
PickImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//Вызываем стандартную галерею для выбора изображения с помощью Intent.ACTION_PICK:
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
//Тип получаемых объектов - image:
photoPickerIntent.setType("image/*");
//Запускаем переход с ожиданием обратного результата в виде информации об изображении:
startActivityForResult(photoPickerIntent, Pick_image);
}
});
}
//Обрабатываем результат выбора в галерее:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case Pick_image:
if(resultCode == RESULT_OK){
try {
//Получаем URI изображения, преобразуем его в Bitmap
//объект и отображаем в элементе ImageView нашего интерфейса:
final Uri imageUri = imageReturnedIntent.getData();
final InputStream imageStream = getContentResolver().openInputStream(imageUri);
final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
imageView.setImageBitmap(selectedImage);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}}}
Запускаем приложение и проверяем работоспособность выбора изображений с галереи: | |
|
Всего комментариев: 1 | |
0
Спам
| |