2010-10-12 26 views
1

L'application Empreintes et Horloge sur un HTC Sens Phone utilise un curseur sur la barre d'outils inférieure (voir ce film pour un exemple: https://docs.google.com/leaf?id=0B9hmEy_z2CRzOTJmYTVlNDktYjkwMS00YTM5LTk3ODQtYmIzODU4Yzk1YjA0&hl=en&authkey=CMWwwegG).comment créer une barre de boutons avec un contrôle coulissant dans Android?

De la visionneuse de hiérarchie, je peux voir qu'ils utilisent un contrôle personnalisé pour cela. Je cherche un moyen d'atteindre le même effet. Je veux une barre de boutons au bas de mon application avec un sélecteur mobile que je peux faire glisser de gauche à droite et en arrière, sélectionnant ainsi les différents onglets.

Quelqu'un peut-il donner quelques conseils sur la façon dont je pourrais y parvenir? Quels contrôles de disposition pourrais-je utiliser à cette fin? Je sais comment créer les onglets et la barre de boutons, mais je suis un peu perplexe sur le sélecteur coulissant.

Merci et salutations, Ivo

Répondre

0

Je prolongeraient la classe TabWidget pour faire mon propre rendu. Vous auriez les avantages de l'interchangeabilité à chaud avec d'autres systèmes d'onglets et une interface uniforme, tout en étant capable de dessiner votre barre d'onglets comme vous le souhaitez. Vous commencerez votre animation dans setCurrentTab.

1

Pour créer une vue, vous avez deux options principales. L'une consiste à le définir en XML, dans un fichier de mise en page que votre activité utilisera.

<LinearLayout ... > <!-- or any other layout, see layout documentation in the SDK --> 
    <ImageView ... <!-- or another view as fits your needs --> 
    android:id="@+id/myview" 
    android:src="@drawable/myimage" ... /> 
</LinearLayout> 

Vous pouvez ensuite référencer votre point de vue dans votre code, après que vous avez appelé setContentView, avec findViewById (R.id.myview). (bien sûr, si vous avez dit, disons, "@ + foo/bar" dans le fichier XML, vous utiliseriez R.foo.bar). L'autre manière est de le créer dynamiquement et de l'attacher à la hiérarchie de la vue.

ImageView v = new ImageView(); 
v.setImageResource(R.drawable.myimage); 
... // initialize your view here 
parent.addChild(v); 

... Ou alors.

Pour obtenir des événements, vous avez à nouveau plusieurs options. L'un d'entre eux est de sous-classer View (ou ImageView d'ailleurs) et d'implémenter onTouchEvent. Vous devrez adapter le code ci-dessus pour créer une instance de votre nouvelle classe au lieu d'une ImageView (évidente dans le code Java, pour XML que vous écrivez comme nom de tag et assurez-vous d'implémenter le constructeur qui prend (Context, AttributeSet) appeler le constructeur de sa superclasse). Ou, vous pouvez écrire un TouchDelegate et utiliser setTouchDelegate sur votre ImageView, ce qui est probablement plus simple dans votre cas.

Une autre approche serait de créer un GestureDetector et de faire correspondre les touches à votre vue en utilisant sa méthode hitTest. Pour la tâche que vous décrivez, c'est excessif, mais cela peut s'avérer utile lorsque votre application devient plus compliquée.