Je tente de créer un thème aperçu "splash screen" comme par:XML d'image Drawable place 1/4 de haut
-à-dire un thème qui place un Dessinable en XML en arrière-plan, qui s'affiche ensuite pendant que Android charge la première mise en page de l'activité.
J'ai utilisé ces techniques sur des mises en page de base pendant des années, tout le temps en supposant qu'il n'y avait pas de solution pour les mises en page plus complexes, comme cette question. Aujourd'hui, j'ai décidé de remettre en question l'hypothèse.
Il est facile de superposer une image sur l'autre, et de centrer la plus petite image en utilisant un LayerDrawable
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap
android:src="@drawable/background" />
</item>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/logo" />
</item>
</layer-list>
Ce que je veux faire est placer le logo exactement 1/4 de la hauteur de l'écran vers le bas à partir du haut.
Existe-t-il une solution à cela, qui peut être utilisée dans un fichier XML dessinable?
mise à jour basée sur comment by DavidH - Peut-on ajouter une sous-classe personnalisée LayerDrawable
dans un fichier XML étirables, qui est ensuite utilisé dans le cadre d'un thème d'application?
Il est préférable d'utiliser une mise en page pour cela. – DavidH
De bonnes lectures en effet. Désolé de n'avoir rien de mieux à offrir, mais je pense que vous devrez écrire une classe LayerDrawable personnalisée et remplacer l'onDraw() où vous faites: canvas.save()> canvas.translate()> logoDrawable.draw (canvas) > canvas.restore(). – DavidH
Malheureusement, pour autant que je sache, ce n'est pas possible. Vous pouvez envisager d'utiliser 'getWindow(). SetBackgroundDrawable (new CustomSplashLayerDrawable());' au début de votre Activity 'onCreate()' – DavidH