Cómo crear una pantalla Splash con fondo transparente en JavaFX
transparency javafx-2 (2)
Necesita tener Stage
y Scene
transparentes para eso. Pane
propio Pane
no tiene un color.
public void start(Stage primaryStage) {
Button btn = new Button("Say ''Hello World''");
AnchorPane root = new AnchorPane();
root.getChildren().add(btn);
// Java 8: requires setting the layout pane background style to transparent
// https://javafx-jira.kenai.com/browse/RT-38938
// "Modena uses a non-transparent background by default"
root.setStyle("-fx-background-color: transparent;");
Scene scene = new Scene(root, 300, 250, Color.TRANSPARENT);
primaryStage.initStyle(StageStyle.TRANSPARENT);
primaryStage.setScene(scene);
primaryStage.show();
}
Intento crear una pantalla de presentación como el ejemplo que he proporcionado. Parece que AnchorPane no permite fondo transparente, he intentado configurar el css de AnchorPane
en -fx-background-color: rgba(255,0,255,0.1) ;
pero el fondo blanco todavía aparece.
Todo lo que tengo en mi archivo fxml es un AnchorPane con ImageView que contiene la imagen png
He buscado en todas partes pero no encuentro ninguna solución, cualquier ayuda sería apreciada. Gracias
Pruebe esta muestra de splash JavaFX creada para la pregunta : Diseñando una pantalla de inicio (java) . Y una muestra de seguimiento que también proporciona comentarios sobre el progreso de la inicialización de la aplicación.
JavaFX ofrece la interfaz Preloader para una transferencia fluida desde splash a la aplicación, pero las muestras anteriores no la utilizan.
Las muestras de bienvenida anteriores tampoco tienen el efecto transparente, pero este ejemplo de diálogo muestra cómo hacerlo y puede combinarlo con las muestras de salpicaduras anteriores para obtener el efecto que desea.
El efecto transparente es creado por:
-
stage.initStyle(StageStyle.TRANSPARENT)
. -
scene.setFill(Color.TRANSPARENT)
. - Garantizar que su nodo raíz no es un rectángulo cuadrado opaco.
Lo cual está demostrado en la muestra de Sergey.
Pregunta relacionada:
Actualización abril de 2016 basada en preguntas adicionales
la imagen del precargador no está en primer plano. He intentado stage.toFront (), pero no ayuda.
Se creó una nueva API en Java 8u20 stage.setAlwaysOnTop (true) . Actualicé la muestra vinculada para usar esto en la pantalla inicial, lo que ayuda a facilitar una transición a la pantalla principal.