Tuesday, February 12, 2013

Android PopUp example



In this post I’ll show you how to create a popup window in Android. A popup window can be used to display an arbitrary view, and it can be very convenient in cases when you want to display an additional information, but don’t want or it’s not appropriate to launch a new activity or  display a dialog.




put the given below popup_bg.9.png in yours drawable folder



Project: TestPopUp
Activity: TestPopupActivity

TestPopupActivity.java
package com.jitesh.testpopup;


import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Point;
import android.graphics.drawable.BitmapDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupWindow;

public class TestPopupActivity extends Activity {

//The "x" and "y" position of the "Show Button" on screen.
Point p;

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  Button btn_show = (Button) findViewById(R.id.show_popup);
  btn_show.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {

      //Open popup window
      if (p != null)
      showPopup(TestPopupActivity.this, p);
    }
  });
}

// Get the x and y position after the button is draw on screen
// (It's important to note that we can't get the position in the onCreate(),
// because at that stage most probably the view isn't drawn yet, so it will return (0, 0))
@Override
public void onWindowFocusChanged(boolean hasFocus) {

  int[] location = new int[2];
  Button button = (Button) findViewById(R.id.show_popup);

  // Get the x, y location and store it in the location[] array
  // location[0] = x, location[1] = y.
  button.getLocationOnScreen(location);

  //Initialize the Point with x, and y positions
  p = new Point();
  p.x = location[0];
  p.y = location[1];
}

// The method that displays the popup.
private void showPopup(final Activity context, Point p) {
  int popupWidth = 200;
  int popupHeight = 150;

  // Inflate the popup_layout.xml
  LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup);
  LayoutInflater layoutInflater = (LayoutInflater) context
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  View layout = layoutInflater.inflate(R.layout.popup_layout, viewGroup);

  // Creating the PopupWindow
  final PopupWindow popup = new PopupWindow(context);
  popup.setContentView(layout);
  popup.setWidth(popupWidth);
  popup.setHeight(popupHeight);
  popup.setFocusable(true);

  // Some offset to align the popup a bit to the right, and a bit down, relative to button's position.
  int OFFSET_X = 30;
  int OFFSET_Y = 30;

  // Clear the default translucent background
  popup.setBackgroundDrawable(new BitmapDrawable());

  // Displaying the popup at the specified location, + offsets.
  popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y);

  // Getting a reference to Close button, and close the popup when clicked.
  Button close = (Button) layout.findViewById(R.id.close);
  close.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
      popup.dismiss();
    }
  });
}
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#CCC"
    android:orientation="vertical" >

    <Button
        android:id="@+id/show_popup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|center_horizontal"
        android:text="Show Popup" />

</LinearLayout>

popup_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="wrap_content"
   android:id="@+id/popup"
   android:layout_height="wrap_content"
   android:background="@drawable/popup_bg"
   android:orientation="vertical" >

<TextView
   android:id="@+id/textView1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Popup"
   android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
   android:id="@+id/textView2"
   android:layout_marginTop="5dp"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="This is a simple popup" />

<Button
   android:id="@+id/close"
   android:layout_marginTop="10dp"
   android:layout_gravity="center_horizontal"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Close" />

</LinearLayout>
Plese download the sample from the link Android popup



1 comment: