以这种方式在应用程序上显示图像

时间:2012-08-30 12:59:09

标签: android android-activity

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

enter image description here

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

编辑:

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

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"

&GT;

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

将宽度/高度设置为正方形可以获得效果...我的问题是:它是否适用于每部手机?或者它适合我的?

4 个答案:

答案 0 :(得分:1)

您最好的拍摄方式是在Dialog

中显示图像

如果您希望更好地控制显示,theme it

答案 1 :(得分:1)

如果您想通过创建新Activity来执行此操作,则应将其布局参数设置为wrap_content,以使其显示在其他活动的上方,但不会完全适合屏幕。此外,通过将其主题设置为Theme.Dialog或继承的主题,您的第二个活动将会更暗,您的活动将显示为对话框。

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

答案 2 :(得分:0)

这是来自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);
}
}

答案 3 :(得分:0)

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