2010-11-28 2 views
3

J'ai un Live Wallpaper qui utilise diverses touches d'écran pour déclencher certains événements. En ce moment, cela fonctionne, mais il semble que je reçois tous les événements tactiles. Par exemple, lorsque l'utilisateur touche une icône pour lancer une application, il semble que je reçois cet événement également.Android Live Wallpaper Hiérarchie des événements Touch

Est-il possible de déterminer si l'utilisateur a touché l'écran d'arrière-plan (c'est-à-dire les inter-icônes) afin que je puisse seulement prendre mes actions à ce moment et ignorer les autres. A défaut, (et en supposant - éventuellement à tort - que si je suis le premier dans la file d'attente qu'il n'y a pas d'autre application sur l'écran), puis-je déterminer où je suis dans la file d'attente des événements tactiles peut seulement prendre des mesures quand je suis le premier dans la file d'attente?
Ou d'autres suggestions s'il vous plaît. Merci Richard

Répondre

10

Ran dans le même problème et a fini par regarder la source pour le fond d'écran Nexus pour voir comment il est mis en œuvre là-bas.

Je ne pense pas qu'il soit possible de déterminer si l'écran d'accueil réel a consommé le toucher. Toutefois, l'écran d'accueil Android par défaut envoie une commande au fond d'écran lorsque vous appuyez sur l'espace vide. Donc, dans votre moteur, vous pouvez écrire:

@Override 
public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested) { 
    if (action.equals(WallpaperManager.COMMAND_TAP)) { 
     // do whatever you would have done on ACTION_UP 
    } 
    return null; 
} 
+0

parfait :) - Est-ce que je veux - Merci - Pouvez-vous me faire savoir où vous avez trouvé le code Nexus s'il vous plaît - Richard – Richard

+0

http: //android.git .kernel.org /? p = plate-forme/paquets/wallpapers/Basic.git; un = arbre; f = src/com/android/fond d'écran; hb = HEAD – Tim

+0

Merci - Je vais commencer à me renseigner :) – Richard

Questions connexes