user1610075
user1610075

Reputation: 1641

Display an image over an app in this way

I want to display an image preview over my app: when user presses an item in the listview (each item is a path to an image stored in sd card) image preview appears,stretched in the available space, like in this picture (image space is black, underlying app, still partially visible, is gray):

enter image description here

when user presses back image disappear. I thought to make an activity just for image displaying but I don't know how to obtain the result in the picture...

Edit:

Ok here's what I've done so far:

1)Manifest:

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

2)Layout:

  <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)Activity onCreate method:

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

where getBitmap is a private method which gives me a bitmap from a filepath.

Problem is that I don't have control over dialog dimensions: dialog's width and height seem to depend on contained image ones...not to mention top/right/left/bottom margins...

Solved (maybe): I modified layout file this way:

<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"/>

Setting width/height to a square allowed to obtain the effect...my question is: will it work for every phone?Or it is right just for mine?

Upvotes: 0

Views: 722

Answers (4)

user1610075
user1610075

Reputation: 1641

Solved, solution entered in main post seems working fine!

Upvotes: 0

Athul Harikumar
Athul Harikumar

Reputation: 2491

this is from api demos creating an activit like a dilog try this

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);
}
}

Upvotes: 0

Mick&#228;el A.
Mick&#228;el A.

Reputation: 9367

If you want to do this by creating a new Activity, you should set its layout parameters to wrap_content so it will appears above the other activity but not fitting the screen totally. Also by setting its theme as Theme.Dialog or an inherited theme, you 2nd activity will be a little bit darker and your activity will appear like a dialog.

You should also try to put layout parameter to fill_parent and add margins if you want the exact result as you shown (don't know if this solution could work).

Upvotes: 1

Plumillon Forge
Plumillon Forge

Reputation: 1643

Your best shot is to display your image in a Dialog

If you then want more control over the display, theme it

Upvotes: 1

Related Questions