Maison > Java > javaDidacticiel > le corps du texte

Explication détaillée de la solution multi-fenêtres pour le navigateur Android

高洛峰
Libérer: 2017-01-17 14:58:34
original
1792 Les gens l'ont consulté

Notre plateforme Android est composée d'activités les unes après les autres, et chaque activité est constituée d'une ou plusieurs vues.
Ainsi, lorsque nous voulons afficher une interface, la première chose à laquelle nous pensons est de créer une activité, puis toutes les opérations sont implémentées dans l'activité, ou dans un dialogue ou un Toast. Cette méthode est simple, mais dans certains cas, tout ce dont nous avons besoin est un simple affichage, et l'utilisation d'Activity est évidemment redondante. Comment devons-nous gérer cela ?

Une application Android est également un processus Linux au niveau de la couche inférieure, mais la notion de processus est affaiblie au niveau de la couche supérieure et fait abstraction de l'interaction de l'activité. Le code contrôle directement l'activité et l'interaction de l'utilisateur est également l'activité.
L'activité est un objet abstrait du point de vue de l'interaction de l'utilisateur et est isolée du processus dans sa conception et son utilisation. Le processus est similaire à une fonction d'adoption. Un processus peut avoir plusieurs activités. Il peut non seulement adopter l'activité de son application actuelle,
mais aussi les activités spécifiées par d'autres packages d'installation pour le processus, si l'activité est détruite. le processus ne sera pas détruit (sauf si le système l'exige ou si le code force la suppression du processus).

Il s'avère que l'ensemble du mécanisme de fenêtre Android est basé sur une interface appelée WindowManager. Cette interface peut ajouter des vues à l'écran, et
peut également supprimer des vues de l'écran. L'objet auquel il fait face est l'écran à une extrémité et la vue à l'autre extrémité. Il ignore directement notre activité précédente
ou notre dialogue, etc. En fait, l'implémentation sous-jacente de notre Activity ou Diolog se fait également via WindowManager. Ce
WindowManager est global, et l'ensemble du système est le seul. C'est la couche inférieure qui affiche la vue.

Écrivez un code simple :
Code Java

WindowManager mWm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);    
Button view = new Button(this);    
view.setText("window manager test!");    
WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();    
mWm.addView(view, mParams);
Copier après la connexion

Généralement, lorsque vous commencerez à développer Android, vous ferez une erreur, c'est-à-dire que vous obtiendrez getWidth() dans le constructeur de View et getHeight(),
Lorsqu'un objet de vue est créé, Android ne connaît pas sa taille, donc les résultats renvoyés par getWidth() et getHeight() sont 0,
La taille réelle est calculée lorsque la mise en page est calculé. Vous trouverez donc une chose intéressante, c'est-à-dire la raison pour laquelle la longueur et la largeur peuvent être obtenues dans onDraw().


Utilisez WindowManager pour implémenter une fenêtre flottante

       WindowManager.LayoutParams params;
        params = new WindowManager.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,//TYPE_APPLICATION,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);
        params.gravity = Gravity.TOP;
        manager.addView(tmpView, params);
Copier après la connexion

Ensuite, vous pouvez ajouter la vue qui doit être ajoutée à la fenêtre flottante à la fenêtre :

 if(view.getParent==null)//如果view没有被加入到某个父组件中,则加入WindowManager中
        wManager.addView(view,wmParams);
Copier après la connexion

Parmi eux, view est le composant de vue qui doit être placé dans la fenêtre flottante.

Si vous souhaitez le supprimer du WindowManager, vous pouvez exécuter l'instruction suivante :

        if(view.getParent()!=null)
        wManager.removeView(view);
Copier après la connexion

Sous Android, vous pouvez ajouter plusieurs fenêtres selon la méthode ci-dessus. Problèmes causés par plusieurs. windows :

2. Problèmes liés au cycle de vie des applications
Lorsque d'autres applications apparaissent devant l'activité principale du navigateur, quel que soit le nombre de sous-fenêtres du navigateur qui apparaissent devant, le cycle de vie du navigateur entrera en pause. État.

Pour des explications plus détaillées sur les solutions multi-fenêtres pour les navigateurs Android, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal