KHJLK
KHJLK
KHJLK
Composants,
Layout & Menu
Rémi Forax
Les composants graphiques
et gestion d'évènement
Android.widget.View
Éléments multimédias
– ImageView : affichage d'une ressource image
– ImageButton : bouton avec image
– VideoView : affichage contrôlable de vidéo
Boutons
Bouton simple:
<Button android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button1_text"
... />
<EditText
android:id="@+id/password"
android:ems="16"
android:hint="password"
android:inputType="textPassword"/>
Spinner
<resources>
Appelé aussi combo-box <string-array name="my_array">
<item>elem1</item>
– Déclarer <item>elem2</item>
<Spinner </string-array>
android:id="@+id/spinner" </resources>
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
– Ajouter les données
Spinner spinner =
(Spinner)findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter =
ArrayAdapter.createFromResource(this,
R.array.my_array,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
WebView
View permettant d'afficher du HTML en utilisant le moteur de rendu Webkit
(utilisé par Chromium, Safari, Opera)
Utilisation
– loadData(String data, String mimeType, String encoding) affiche le contenu
– loadUrl(String url) poaur charger le contenu à une URL spécifique
WebView
Interception des clics sur les liens hypertextes
en redéfinissant
– shouldOverrideUrlLoading(WebView, String Url)
layout_width = fill_parent
layout_height = 0dp
layout_weight = 1
layout_gravity = top
layout_width = 100dp
layout_height = wrap_content
layout_gravity = right
Contraintes du LinearLayout
– width/height: controle l'occupation de la case
● fill_parent: prend la taille du parent
● wrap_content: prend la taille du contenu
layout_width = wrap_content
layout_height = wrap_content
layout_below = @+id/login
layout_marginTop = 16dp
layout_centerHorizontal = true
layout_width = 100dp
layout_height = wrap_content
layout_below = “@+id/passwd2
layout_marginTop = 80dp
layout_alignRight = @+id/passwd
Contraintes du RelativeLayout
– width/height: controle l'occupation de la case
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float
velocityY) {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_DIFF_Y) {
return false;
}
int diffX = e1.getX() - e2.getX() ;
int velocity = Math.abs(velocityX);
if (Math.abs(diffX) > SWIPE_MIN_DIFF_X && velocity > SWIPE_MIN_VELOCITY) {
// if diff <0 SWIPE right to left, if diff>0 SWIPE left to right
}
return false;
}
Gestures complexes
Pour reconnaitre des gestes plus complexe comme des
lettres de l'alphabet par ex.
● GestureOverlayView est un FrameLayout transparent
qui se met devant une autre View pour trapper les
Touch events
● OnGesturePerformedListener.onGesturePerformed(Ge
stureOverlayView view, Gesture gesture) est appelée à
la fin d'une gesture
● Une GestureLibrary permettre d'avoir un score de
confiance par rapport à des Gestures pré-enregistrées
Exemple
private final GestureLibrary library = ...
@Override
public void onGesturePerformed(GestureOverlayView overlay,
Gesture gesture) {
List<Prediction> predictions = library.recognize(gesture);
if (!predictions.isEmpty()) {
return;
}
<item
...
android:showAsAction="ifRoom"
...
/>
ActionBar & Onglet
La menuBar permet aussi de définir des onglets (Tab) si
on utilise le mode NAVIGATION_MODE_TABS
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
...
Onglets + Menu
On peut aussi mélanger les onglets et les
menus
Popup Menu
Un popup menu (version >= 11) est un menu
que l'on peut associe à une vue et qui apparait
en dessous de celle-ci
On crée un PopupMenu(context, view), puis
on utilise la méthode show() pour l'afficher
Il est possible d'utiliser un MenuInflater pour
créer les menu items à partir d'un fichier XML
Exemple de Popup Menu
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);