从android库中选择照片
我正在尝试构建一个包含ImageView的应用程序。如果单击该应用程序,将显示图库,以便我可以为ImageView选择图片。 我的Xml非常简单:从android库中选择照片,android,imageview,image-gallery,Android,Imageview,Image Gallery,我正在尝试构建一个包含ImageView的应用程序。如果单击该应用程序,将显示图库,以便我可以为ImageView选择图片。 我的Xml非常简单: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_par
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/imageView"
android:layout_gravity="center_horizontal"
android:clickable="true"/>
<LinearLayout>
你们走的路是对的,只需改变一些事情 这将打开您的图库:
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
下一步实现onActivityResult回调。这也很简单:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == Activity.RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
image.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
希望这能对你有所帮助:)你走在正确的道路上,只需改变一些事情 这将打开您的图库:
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
下一步实现onActivityResult回调。这也很简单:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == Activity.RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
image.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
希望这能对你有所帮助:)你走在正确的道路上,只需改变一些事情 这将打开您的图库:
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
下一步实现onActivityResult回调。这也很简单:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == Activity.RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
image.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
希望这能对你有所帮助:)你走在正确的道路上,只需改变一些事情 这将打开您的图库:
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
下一步实现onActivityResult回调。这也很简单:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == Activity.RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
image.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
希望这对你有所帮助:)你可以使用魔法照相库。 您可以使用此库选择图片或拍照,还可以调整大小和更改照片质量:D 1。在gradle中尝试编译
compile 'com.frosquivel:magicaltakephoto:1.0'
2。您在manifest.xml中需要此权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
4。如果需要拍照,请使用该方法
magicalTakePhoto.takePhoto("my_photo_name");
5。如果需要在设备中选择图片,请尝试以下方法:
magicalTakePhoto.selectedPicture("my_header_name");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
magicalTakePhoto.resultPhoto(requestCode, resultCode, data);
//example to get photo
//imageView.setImageBitmap(magicalTakePhoto.getMyPhoto());
}
6。您需要覆盖活动或片段的activityresult方法,如下所示:
magicalTakePhoto.selectedPicture("my_header_name");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
magicalTakePhoto.resultPhoto(requestCode, resultCode, data);
//example to get photo
//imageView.setImageBitmap(magicalTakePhoto.getMyPhoto());
}
注意:只有使用此库,您才能在设备中拍摄和选择图片,这将使用min API 15。您可以使用Magic take Photo Library。 您可以使用此库选择图片或拍照,还可以调整大小和更改照片质量:D 1。在gradle中尝试编译
compile 'com.frosquivel:magicaltakephoto:1.0'
2。您在manifest.xml中需要此权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
4。如果需要拍照,请使用该方法
magicalTakePhoto.takePhoto("my_photo_name");
5。如果需要在设备中选择图片,请尝试以下方法:
magicalTakePhoto.selectedPicture("my_header_name");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
magicalTakePhoto.resultPhoto(requestCode, resultCode, data);
//example to get photo
//imageView.setImageBitmap(magicalTakePhoto.getMyPhoto());
}
6。您需要覆盖活动或片段的activityresult方法,如下所示:
magicalTakePhoto.selectedPicture("my_header_name");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
magicalTakePhoto.resultPhoto(requestCode, resultCode, data);
//example to get photo
//imageView.setImageBitmap(magicalTakePhoto.getMyPhoto());
}
注意:只有使用此库,您才能在设备中拍摄和选择图片,这将使用min API 15。您可以使用Magic take Photo Library。 您可以使用此库选择图片或拍照,还可以调整大小和更改照片质量:D 1。在gradle中尝试编译
compile 'com.frosquivel:magicaltakephoto:1.0'
2。您在manifest.xml中需要此权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
4。如果需要拍照,请使用该方法
magicalTakePhoto.takePhoto("my_photo_name");
5。如果需要在设备中选择图片,请尝试以下方法:
magicalTakePhoto.selectedPicture("my_header_name");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
magicalTakePhoto.resultPhoto(requestCode, resultCode, data);
//example to get photo
//imageView.setImageBitmap(magicalTakePhoto.getMyPhoto());
}
6。您需要覆盖活动或片段的activityresult方法,如下所示:
magicalTakePhoto.selectedPicture("my_header_name");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
magicalTakePhoto.resultPhoto(requestCode, resultCode, data);
//example to get photo
//imageView.setImageBitmap(magicalTakePhoto.getMyPhoto());
}
注意:只有使用此库,您才能在设备中拍摄和选择图片,这将使用min API 15。您可以使用Magic take Photo Library。 您可以使用此库选择图片或拍照,还可以调整大小和更改照片质量:D 1。在gradle中尝试编译
compile 'com.frosquivel:magicaltakephoto:1.0'
2。您在manifest.xml中需要此权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
4。如果需要拍照,请使用该方法
magicalTakePhoto.takePhoto("my_photo_name");
5。如果需要在设备中选择图片,请尝试以下方法:
magicalTakePhoto.selectedPicture("my_header_name");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
magicalTakePhoto.resultPhoto(requestCode, resultCode, data);
//example to get photo
//imageView.setImageBitmap(magicalTakePhoto.getMyPhoto());
}
6。您需要覆盖活动或片段的activityresult方法,如下所示:
magicalTakePhoto.selectedPicture("my_header_name");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
magicalTakePhoto.resultPhoto(requestCode, resultCode, data);
//example to get photo
//imageView.setImageBitmap(magicalTakePhoto.getMyPhoto());
}
注意:只有使用此库,您才能在设备中拍摄和选择图片,这将使用最小API 15