29 votes

Comment ajouter une vue personnalisée dans JellyBean Launcher d'Android

Je suis en train de faire des custom launcher android. J'ai renvoyé le code d'android Jellybean lanceur. maintenant, je veux faire une modification dans ce lanceur.

Ce que je veux : Comme nous le savons, il y a par défaut sur cinq espace de travail écrans et je veux ajouter une vue personnalisée à l'une quelconque de l'espace de travail de l'écran. Mon fichier xml doit être gonflé à l'une quelconque de l'écran.

J'ai essayé de nombreuses façons de le faire, mais comme le lanceur par défaut le code est très complexe encore avoir pas de chance pour trouver la voie pour cela.

Il y a déjà une application appelée SOHO dans Playstore en train de faire exactement ce que je veux. J'ai ajouter la capture d'écran pour le référencement de ce que je veux.

Merci de m'aider si quelqu'un d'entre vous ayant aucune idée de le faire.

Merci à l'Avance.

enter image description here

2voto

sha256 Points 994

J'ai la réponse pour vous. Vous pouvez faire les deux en Launcher2 et Launcher3 package à partir d' (PSBA). Jellybean est à l'aide de Launcher2 peut-être. Personnellement, je vous suggère d'aller avec Launcher3, il a buit-dans la manière de le faire.

Launcher3:

créer une classe qui étend l' com.android.launcher3.Launcher de la classe et de remplacer les méthodes nécessaires comme suit:

public class MyLauncher extends Launcher {


    @Override
    protected boolean hasCustomContentToLeft() {
        return true;
    }


    @Override
    protected void addCustomContentToLeft() {
        View customView = getLayoutInflater().inflate(R.layout.custom, null);

        CustomContentCallbacks callbacks = new CustomContentCallbacks() {

            @Override
            public void onShow() {}

            @Override
            public void onScrollProgressChanged(float progress) {}

            @Override
            public void onHide() {}
        };


        addToCustomContentPage(customView, callbacks, "custom view");
    }

}

Ici, R.layout.custom est la vue personnalisée que vous vouliez. Puis dans le fichier de manifeste de changer l'écran de lancement de l'activité de la classe d' Launcher de MyLauncher. Et c'est tout.

Launcher2:

en Workspace.java créer la méthode suivante:

public void addCustomView(View child){
   CellLayout layout = (CellLayout) getChildAt(0);
   layout.addView(child);
}

puis, en Launcher.java, trouver la ligne suivante:

mWorkspace = (Workspace) mDragLayer.findViewById(R.id.workspace);

puis collez le code suivant quelque part après cette ligne:

View child = LayoutInflater.from(this).inflate(R.layout.custom, null);
mWorkspace.addCustomView(child);

1voto

rekire Points 16519

Si je me souviens bien, il vous suffit de mettre en œuvre une activité standard qui affiche un lanceur à domicile. Dans votre Manifest.xml, il vous suffit de le définir comme ceci:

 <activity android:name=".YourLauncher" android:label="@string/launcher_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
 

0voto

YiFeng.Sun Points 1

vous pouvez simplement ajouter une vue dans le code d'utilisation de Lanancher par défaut

 wm = (WindowManager) getSystemService("window");
params = new LayoutParams();
params.type = LayoutParams.TYPE_PHONE;
    params.format = PixelFormat.RGBA_8888;
    params.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
            | LayoutParams.FLAG_NOT_FOCUSABLE;
    params.x = 100;
    params.y = 100;
    params.height = WindowManager.LayoutParams.WRAP_CONTENT;
    params.width = WindowManager.LayoutParams.WRAP_CONTENT;
    params.gravity = Gravity.LEFT | Gravity.TOP;
wm.addView(view, params);
 

quand vous voulez l'enlever juste

 wm.removeView(v);
 

vous avez également besoin d'une autorisation

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
 

0voto

pellucide Points 638

Bonne nouvelle, pas de bonnes nouvelles, mauvaises nouvelles.

La bonne nouvelle d'abord.
Il est possible de faire ce que vous voulez.

Maintenant, les nouvelles pas si bonne.
Vous aurez à écrire le lanceur d'application à partir de zéro(aka l'Écran d'Accueil). Yep, qui consiste à faire toutes ces belles et ingénieuses, les choses que le lanceur par défaut n'(plusieurs pages, faites glisser-déplacer, supprimer/ajouter des icônes d'application, etc). Heureusement, ce n'est pas aussi difficile qu'il y paraît. Parce que le lanceur par défaut l'application elle-même est opensource. Même si ce code est complet, il n'est pas facile à lire. Un plus facile de commencer avec le SDK

   Android-SDK/samples/android-x/Home/
   where x is the API level.

Ils ont fourni le code source pour un exemple de l'écran d'accueil et il devrait vous donner un bon départ. Avec certains de persévérance et de café, vous devriez être en mesure de modifier la Launcher2 code pour ajouter une page personnalisée de votre propre.

Maintenant la partie Difficile.
Parce qu'une partie de votre but est de garder les pages existantes même et ajouter une nouvelle page, se présente au travail pour que toutes les saveurs d'android... HTC sense, Samsung TouchWiz, etc, etc n'est pas une seule personne de la charge de travail. Ils ont tous des fonctions différentes pour l'écran d'Accueil. La préservation de ces caractéristiques et l'ajout d'une nouvelle page personnalisée est une tâche difficile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X