Red de conocimiento informático - Conocimiento sistemático - ¿Qué pasa si hago clic en un ImageView para colocarlo al frente del control?

¿Qué pasa si hago clic en un ImageView para colocarlo al frente del control?

Hablemos primero de los principios básicos de implementación. El efecto de esta ventana flotante de escritorio es similar a un widget, pero es mucho más flexible que un widget. Implementado principalmente a través de WindowManager. Llame al método addView de esta clase para agregar una ventana flotante, al método updateViewLayout para actualizar los parámetros de la ventana flotante y a removeView para eliminar la ventana flotante. Es necesario explicar en detalle los parámetros de la ventana flotante.

Administrador de ventanas. LayoutParams Esta clase se utiliza para proporcionar los parámetros necesarios para las ventanas flotantes. Hay varias variables de uso común:

El valor de tipo se utiliza para determinar el tipo de ventanas flotantes. Generalmente se establece en 2002, lo que significa. que se utiliza en todas las aplicaciones pero debajo de la barra de estado.

El valor Flags se utiliza para determinar el comportamiento de las ventanas flotantes, como cuadros de diálogo sin foco, sin modo, etc. Hay muchas propiedades, así que consulte la documentación.

El valor de gravedad se utiliza para determinar la alineación de la ventana flotante. Generalmente se establece en la alineación de la esquina superior izquierda para facilitar el cálculo de las coordenadas al arrastrar la ventana flotante.

El valor x se utiliza para determinar la posición de la ventana flotante. Si desea mover la ventana flotante horizontalmente, debe cambiar el valor x.

El valor y se utiliza para determinar la posición de la ventana flotante. Si desea mover la ventana flotante verticalmente, debe cambiar el valor y.

El valor del ancho se utiliza para especificar el ancho de la ventana flotante.

El valor de altura se utiliza para especificar la altura de la ventana flotante.

Para crear una ventana flotante, debe solicitar permiso al usuario, por lo que debe agregarlo.

Después de presentar el principio, comencemos a implementarlo con código. . Primero, cree un nuevo proyecto de Android en Eclipse. El nombre del proyecto es 360FloatWindowDemo. Luego escriba el archivo de diseño. El archivo de diseño es muy simple y tiene un solo botón. Abra o cree Activity_main.xml y agregue el siguiente código:

[html]Ver texto sin formato

& ltdiseño relativo xmlns:Android = "/apk/RES/Android "

xmlns:tools="/tools "

Android:layout _ width = " fill _ parent "

Android:layout _ height = " fill _ parent "

herramientas:context=".

MainActivity " >>p>

& ltButton

Android:id = " @+id/start _ float _ window "

Android:layout _ width = " fill _ parent "

Android:layout _ height = " wrap _ content "

android:text= "Iniciar ventana flotante" & gt

& lt/Button > ;

& lt/relative layout >

Luego cree un nuevo archivo de diseño llamado float_window_small.xml para usarlo como diseño de la pequeña ventana flotante y agréguele el siguiente código :

[html]Ver texto sin formato

& lt?xml version="1.0"Encoding="UTF-8"?>

& ltDiseño lineal

xmlns:Android = "/apk/RES/Android "

Android:id = " @+id/small _ window _ layout "

android:layout_width ="60dip "

android:layout_height="25dip "

Android:background = " @ drawable/BG _ pequeño "

& gt

& ltVista de texto

android:id="@+id/percent "

Android:layout _ width = " fill _ parent "

Android :layout _ height = " fill _ parent "

Android:gravity = "center"

android:textColor="#ffffff "

/& gt;

& lt/linear design & gt;

Cree un nuevo archivo de diseño llamado float_window_big.xml para usarlo como diseño de la ventana flotante grande y agréguelo. Agregue lo siguiente código:

[html]Ver texto sin formato

& lt? xml version="1.0" encoding="UTF-8"? & gt

& ltDiseño lineal

xmlns:Android = "/apk/RES/Android "

Android:id = " @+id/big _ window _ diseño "

android:layout_width="200dip "

Android:layout _ height = " 100 dip "

Android:background = " @ drawable/ BG _ grande "

android:orientation="vertical "

& gt

& botón lt

android:id="@ + id/close "

Android:layout _ width = " 100 dip "

android:layout_height="40dip "

Android:layout _ Gravity = " centro _ horizontal "

Android:diseño _ m

argin top = " 12 dip "

Android:text= "Cerrar ventana flotante"

/& gt;

& botón lt

android:id="@+id/back "

Android:layout _ width = " 100 dip "

android:layout_height="40dip "

Android:layout _ Gravity = " center _ horizontal "

Android: text = "Back "

/& gt;

& lt/diseño lineal & gt ;

Puede encontrar algunas imágenes para reemplazar los recursos de imágenes utilizados en los archivos de diseño de las dos ventanas flotantes. Al mismo tiempo, proporcionaré el código fuente y usted también puede obtenerlo del código fuente.

Luego abra o cree MainActivity, que es la interfaz principal del proyecto, y agregue el siguiente código allí:

[java]Ver texto sin formato

Público clase MainActivity Ampliar actividad {

@Override

Protected void onCreate(Bundle savestancestate){

super oncreate(savedInstanceState);

setContentView(r . diseño . actividad _ principal);

Botón startFloatWindow =(Botón)findViewById(r . id . start _ float _ window);

startfloatwindow . OnClickListener(){

@override

public void onClick(View arg0) {

Intención Intención = nueva Intención (actividad principal. esto, servicio de ventana flotante. clase) ;

startService(intención);

finish();

}

});

}

}

Como puedes ver aquí, el código de MainActivity no es simple: registra un evento de clic para el botón que abre la ventana flotante, que se utiliza para abrir un servicio. y luego cerrar la actividad actual. La lógica de crear ventanas flotantes se deja en manos del servicio.