单击按钮后在弹出窗口中显示图像——Android/Java

单击按钮后在弹出窗口中显示图像——Android/Java,java,android,image,view,Java,Android,Image,View,我在互联网上搜索这个问题的解决方案已经好几个小时了,但我似乎找不到一个有效的答案。 我已经编写了一个android应用程序,它使用Eclipse中的照相机模拟器拍摄照片并将其保存到sd卡(路径使用名为“file”的字符串存储)。我想做的是显示图像,最好是在一个弹出窗口中,用另一个按钮关闭它并返回到应用程序。我希望我需要创建另一个类来实现这一点,但我不确定所涉及的所有内容。我是否需要创建另一个XML文件来进行布局?如何访问该文件并显示它?如果我要使用另一个类,我希望我会使用ImageView,但除

我在互联网上搜索这个问题的解决方案已经好几个小时了,但我似乎找不到一个有效的答案。 我已经编写了一个android应用程序,它使用Eclipse中的照相机模拟器拍摄照片并将其保存到sd卡(路径使用名为“file”的字符串存储)。我想做的是显示图像,最好是在一个弹出窗口中,用另一个按钮关闭它并返回到应用程序。我希望我需要创建另一个类来实现这一点,但我不确定所涉及的所有内容。我是否需要创建另一个XML文件来进行布局?如何访问该文件并显示它?如果我要使用另一个类,我希望我会使用ImageView,但除此之外,我不知道该做什么。 除了单击按钮时调用的方法之外,我没有多少代码可以真正提供帮助。这部分代码工作正常,它只是一个如下所示的方法:

public void viewPhoto(file){ }
正如你所看到的,我还没有任何方法,这就是为什么我在这里张贴。 我已经花了几个小时试图解决这个问题,所以我非常感谢你们的任何想法

编辑:更多信息

我发现的许多建议都要求将图像存储在项目的“src”文件夹中。但是,这张照片将在同一个程序中拍摄和使用,因此我必须能够单独使用其文件路径访问它。我不能只在XML中声明它的位置。我在现有代码中创建了一个对话框对象,但我不确定这是否可行。我计划使用的对话框应该能够从存储在前面提到的字符串中的指定路径访问照片

我在这篇文章中提到了第一个答案: 但正如您所见,它要求图像位于src文件夹中,并在XML中指定

第二次编辑:

下面是我目前拥有的XML和Java代码。但首先我要提到的是,我有两个XML文件——一个叫做activity_main.XML,它处理所有初始按钮、菜单等。第二个只用于我的照片(叫做photo_viewer.XML),它只包含ImageView

photo_viewer.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pictureViewer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/viewImage" />

</RelativeLayout>

您需要创建一个扩展Dialog类的类

请参阅本手册,了解如何创建自己的对话框


然后,为了显示图像,只需调用DialogObj.show()来显示对话框。

Hmm,这可能正是我需要的。我想现在唯一的问题是如何为对话框创建一个单独的布局XML文件…?我给出的链接详细介绍了如何在单独的XML中创建对话框布局以及如何继承对话框类。许多建议要求图像位于“src”文件夹中。但是,这张照片将在同一个程序中拍摄和使用,因此我必须能够单独使用其文件路径访问它。例如,我创建了第二个XML,但没有为对话框创建第二个类。相反,我在现有代码中创建了一个对话框对象。首先,我不确定这是否有效,但我想我应该问一下。其次,我需要确保对话框显示指定路径的图像。有什么想法?我已经编辑了原始的帖子来让这更清楚。很抱歉。与您的需要不同的是,您需要从文件中创建位图或可绘制对象,并将其放入您的小部件中。顺便说一句,大书呆子农场安卓系统的书有一个项目,使用相机来做这一切。
public void viewPhoto(String file){ 
    ImageView imageView = new ImageView(getApplicationContext());
    LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT);
    Bitmap image = BitmapFactory.decodeFile(file);
    imageView.setImageBitmap(image);
    RelativeLayout rl = (RelativeLayout)findViewById(R.id.pictureViewer);
    rl.addView(imageView, lp);
}