我正在尝试构建一个包含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_parent">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/imageView"
android:layout_gravity="center_horizontal"
android:clickable="true"/>
<LinearLayout>
这是我的主要课程
public class MainActivity extends Activity {
ImageView img;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
img=(ImageView)findViewById(R.id.imageView);
setContentView(R.layout.cam);
img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent =new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Contact Image"),1);
}
});
}
public void onActivityResult(int reqCode,int resCode, Intent data){
if(resCode==RESULT_OK){
if(reqCode==1){
img.setImageURI(data.getData());
}
}
}
}
答案 0 :(得分:3)
你是正确的,只需改变一些事情。
这将打开您的画廊:
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));
}
}
希望这会对你有所帮助:)。
答案 1 :(得分:0)
您可以使用Magical Take Photo库。 你有选择图片的可能性或用这个图库拍照,广告调整大小的可能性和改变照片的质量: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"/>
第3。像这样的类
//“this”是当前的活动参数
MagicalTakePhoto magicalTakePhoto = new MagicalTakePhoto(this,ANY_INTEGER_0_TO_4000_FOR_QUALITY);
<强> 4。如果你需要拍照,请使用方法
magicalTakePhoto.takePhoto("my_photo_name");
<强> 5。如果您需要在设备中选择图片,请尝试使用以下方法:
magicalTakePhoto.selectedPicture("my_header_name");
<强> 6。您需要覆盖活动或片段的onActivityResult方法,如下所示:
@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。