0

我想在我的应用程序上显示图像预览:当用户在列表视图中按下一个项目时(每个项目都是存储在 sd 卡中的图像的路径)图像预览出现,在可用空间中拉伸,就像在这张图片中(图像空间是黑色的,底层应用程序,仍然部分可见,是灰色的):

在此处输入图像描述

当用户按下后图像消失。我想为图像显示做一个活动,但我不知道如何获得图片中的结果......

编辑:

好的,这是我到目前为止所做的:

1)清单:

 <activity
        android:name=".ImageDialogActivity" android:theme="@android:style/Theme.Dialog">
 </activity>

2)布局:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
   >
    <ImageView android:id="@+id/imageView"
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>
   </LinearLayout>

3)活动onCreate方法:

super.onCreate(savedInstanceState);
setContentView(R.layout.image_preview);
String filepath = getIntent().getStringExtra("image_filepath");  
((ImageView)findViewById(R.id.imageView)).setImageBitmap(getBitmap(filepath));

其中 getBitmap 是一个私有方法,它为我提供来自文件路径的位图。

问题是我无法控制对话框尺寸:对话框的宽度和高度似乎取决于包含的图像...更不用说上/右/左/下边距了...

已解决(也许):我以这种方式修改了布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="200dp"
android:layout_height="200dp"

>

<ImageView android:id="@+id/imageView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="centerInside"/>

将宽度/高度设置为允许获得效果的正方形......我的问题是:它适用于每部手机吗?还是只适合我的?

4

4 回答 4

1

您最好的方法是在对话框中显示您的图像

如果您想要更多地控制显示,请将其设置为主题

于 2012-08-30T13:03:35.667 回答
1

如果你想通过创建一个新的来做到这一点Activity,你应该将它的布局参数设置为,wrap_content这样它就会出现在其他活动的上方,但不完全适合屏幕。此外,通过将其主题设置为Theme.Dialog或继承的主题,您的第二个活动将有点暗,您的活动将显示为一个对话框。

fill_parent如果您想要显示的确切结果(不知道此解决方案是否可行),您还应该尝试将布局参数添加到并添加边距。

于 2012-08-30T13:05:23.330 回答
0

已解决,在主帖中输入的解决方案似乎工作正常!

于 2012-08-31T09:43:31.657 回答
0

这是来自创建像 dilog 这样的活动的 api 演示 试试这个

public class DialogActivity extends Activity {
/**
 * Initialization of the Activity after it is first created.  Must at least
 * call {@link android.app.Activity#setContentView setContentView()} to
 * describe what is to be displayed in the screen.
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
    // Be sure to call the super class.
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_LEFT_ICON);

    // See assets/res/any/layout/dialog_activity.xml for this
    // view layout definition, which is being set here as
    // the content of our screen.
    setContentView(R.layout.dialog_activity);

    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, 
            android.R.drawable.ic_dialog_alert);
}
}
于 2012-08-30T13:10:57.527 回答