我是Java和Android Studio编程的新手。我正在尝试创建一个简短的应用程序,感谢其他程序员的帖子:带有“浏览图库”按钮的应用程序 - >当我点击它我的Android画廊被打开,然后我选择一个图像,我希望它显示在我创建的imageView上。
按下按钮后,我成功访问了我的Android画廊并选择了一个图像,但没有在imageView上显示。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".BlankActivityWithFragment" tools:ignore="MergeRootFrame">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Browse from Gallery"
android:id="@+id/button"
android:layout_gravity="left|top"
android:onClick="onButtonClicked"
android:enabled="true" />
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#ffaaaa"
android:id="@+id/imageViewGallery"
android:layout_gravity="center_horizontal|top" />
</FrameLayout>
如您所见,Browse From Gallery的按钮将调用onButtonClicked函数。
public class ImagesProj extends Activity {
// define the variable that will show the gallery images
ImageView imageViewGallery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.images_proj);
// connect the variable to the images_proj.xml
imageViewGallery = (ImageView) findViewById(R.id.imageViewGallery);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
}
// This function is called after clicking the Browse From Gallery button
public boolean onButtonClicked(View view) {
// access the images gallery
Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 2);
return true;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2 && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
// String picturePath contains the path of selected Image
// Show the Selected Image on ImageView
ImageView imageView = (ImageView) findViewById(R.id.imageViewGallery);
imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
}
请帮我显示所选图片,谢谢!
我试着看的帖子: Picking a photo from gallery and show in a image view
答案 0 :(得分:2)
经过数小时的尝试后,我需要做的就是将这一行添加到manifest.xml:
我不知道为什么我需要“WRITE ....”但它有效:) 谢谢所有人试图帮助
答案 1 :(得分:0)
可能是图像非常大,只是在路径上调用decodeFile就不会将位图调整为imageView。
使用库(与大多数人一样:P)或研究如何将其调整为imageView的尺寸。 btw库将为您节省大量精力,但只有自己动手才会变得更好。