PopupWindow punto fijo donde el efecto de la finalización del pop donde las ventanas pop-up
visualizar :
PopupWindow Esta clase se utiliza para implementar un pop-up, se puede utilizar en cualquier diseño Ver como su contenido , esta caja de texto emergente está suspendido sobre la actividad actual.
En primer lugar, la configuración XML archivo (pop.xml)
<? xml version = "1.0" que codifica = "UTF-8" ?>
< LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android"
android: layout_width = "fill_parent"
android: layout_height = "fill_parent"
Android: Fondo = "# c1c1c1"
android: gravedad = "center_horizontal"
android: orientación = "vertical" >
< TextView
Android: id = "@ + / Identificación del btn_pop"
android: layout_width = "30DP"
android: layout_height = "30DP"
android: layout_margin = "10dip"
android: gravedad = "centro"
Android: Texto = " 弹窗" />
</ LinearLayout >
A continuación, la operación específica en la categoría principal
com.example.popwindow empaquetar;
android.app.Activity importación;
android.os.Bundle importación;
android.view.Gravity importación;
android.view.MotionEvent importación;
android.view.View importación;
android.view.ViewGroup importación;
android.widget.PopupWindow importación;
clase pública se extiende PopWindowActivity Actividad {
Ver vista privada;
popwindow PopupWindow privado;
@Anular
protegida onCreate void (Bundle savedInstanceState) {
// generada-Auto TODO Stub
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
// método personalizado
initPopupWindow ();
}
// lograr onTouchEvent método
onTouchEvent pública booleano (evento MotionEvent) {
// Si la prensa es operativo
si (event.getAction () == MotionEvent.ACTION_DOWN) {
// método personalizado de adquirir x, y coordenadas
int x = (int) event.getX ();
int y = (int) event.getY ();
showXY(x, y);
}
retorno super.onTouchEvent (evento);
}
showXY private void (float x, float y) {
// primero haga clic en y después en Continuar diferencia será , por lo que es necesario en el lugar y eje y operación
y-=200;
si (popwindow.isShowing ()) {
popwindow.dismiss ();
// Porque cuando el primer clic se ejecutará normalmente , pero no habrá una posición diferente cuando el segundo clic , por lo que se reduce de acuerdo con el propósito de los ejes
popwindow.showAsDropDown (vista, (int) x, (int) y);
// Otra forma es mediante la definición de x, y el eje de funcionamiento , mediante el uso de showAtLocation especificar una ubicación diferente y adaptado pop-resolución enfoque
/*popwindow.showAtLocation(v, Gravity.CENTER, (int) event.getRawX () - x1
/ 2, (int) event.getRawY () - y1 / 2); * /
} Else {
// El clic es el primer clic , porque
y+=200;
popwindow.showAsDropDown (vista, (int) x, (int) y);
// Otra forma es mediante la definición de x, y el eje de funcionamiento , mediante el uso de showAtLocation especificar una ubicación diferente y adaptado pop-resolución enfoque
/*popwindow.showAtLocation(v, Gravity.CENTER, (int) event.getRawX () - x1
/ 2, (int) event.getRawY () - y1 / 2); * /
}
}
initPopupWindow private void () {
// debido a que aparezca una ventana , entonces esto puede ser una forma de visión, lo puso dentro del cargador de clases a la carga
ver = this.getLayoutInflater () inflar (R.layout.pop, null).;
// crear instancias de un PopWindow
popwindow = new PopupWindow (vista, ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}
}