IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ AndroidConsultez toutes les FAQ

Nombre d'auteurs : 5, nombre de questions : 55, dernière mise à jour : 16 avril 2016  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://android.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci .

Sur ce, nous vous souhaitons une bonne lecture.

SommaireManipulation de l'IHM (10)
précédent sommaire suivant
 

Il faut afficher la boîte de dialogue, puis lancer votre traitement potentiellement long.
À la fin de votre opération, via un Handler, vous désactivez la boîte de dialogue.
Voici un exemple :

Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class MaClass extends Activity implements Runnable { 
  
	private ProgressDialog pd; 
  
	//... 
  
	public void launchWait() { 
		pd = ProgressDialog.show(this, "Patientez...", "En cours d'action longue", true,false); 
  
		Thread thread = new Thread(this); 
		thread.start(); 
	} 
  
	public void run() { 
  
		//Ici mettre le code qui effectue une opération "longue"  
		//... 
		//... 
  
		//Une fois l'opération finie, prévenir la boîte de dialogue  
		//qu'elle peut se fermer : 
		handler.sendEmptyMessage(0); 
	} 
  
	private Handler handler = new Handler() { 
  
		@Override 
		public void handleMessage(Message msg) { 
			//Le handler a reçu une notification 
			//On ferme la boîte de dialogue 
			//Les bonnes pratiques voudraient qu'on teste le msg ... 
			pd.dismiss(); 
		} 
	}; 
}

Mis à jour le 8 décembre 2010 Mickael_LT

Code java : Sélectionner tout
1
2
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

Mis à jour le 8 décembre 2010 Mickael_LT

Il est possible d'insérer des images près d'un composant, sans déclarer un nouveau composant de type ImageView. Ceci peut se faire depuis la description xml via les attributs : « drawableLeft », « drawableRight », « drawableTop », « drawableBottom ».

Code xml : Sélectionner tout
1
2
3
4
5
6
<Button 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:drawableLeft="@drawable/icon" 
	android:text="Exemple image à gauche" 
	android:minWidth="180dp" />

Mis à jour le 8 décembre 2010 Mickael_LT

Google a mis en place un outil pour vous simplifier la création d'icônes. En quelques clics, l'icône sera téléchargeable et contiendra les versions low/middle/high dmi.
http://android-ui-utils.googlecode.c...ist/index.html

Mis à jour le 8 décembre 2010 Mickael_LT

Soit vous le faites depuis votre manifest.xml :

Code xml : Sélectionner tout
<activity android:theme="@android:style/Theme.NoTitleBar" ... />
Soit depuis votre code :

Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
	super.onCreate(savedInstanceState); 
        //Renseigner ce code avant l'appel à 'setContentView' 
	this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
	setContentView(R.layout.main); 
        //... 
}
Ceci vous permet de masquer la barre sur chacune de vos activités.
Il est également possible de masquer la barre pour toute l'application via le fichier manifest :

Code xml : Sélectionner tout
<application android:theme="@android:style/Theme.NoTitleBar" ... />

Mis à jour le 8 décembre 2010 Mickael_LT

Il faut mémoriser l'instance du Toast affiché, puis changer son texte :

Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private Toast toast; 
  
private void showToast(String message){ 
  
	if(toast!=null){ 
		toast.setText(message); 
	}else{ 
		toast = Toast.makeText(this, message,Toast.LENGTH_SHORT); 
	} 
	toast.show(); 
} 
  
public void maMethode() { 
	//On affiche un premier Toast 
	showToast("message1"); 
	//...  
	//On affiche ou modifie le Toast 
	showToast("message2"); 
}

Mis à jour le 8 décembre 2010 Mickael_LT

Il suffit de rajouter des paramètres pour décrire votre activité dans le fichier manifest.xml :

Code xml : Sélectionner tout
android:screenOrientation="portrait" android:configChanges="orientation"

Mis à jour le 8 décembre 2010 Mickael_LT

Le SDK d'Android propose un mécanisme de « Selector » pour simplifier la tâche des développeurs pour gérer les différents états d'un composant.
Ainsi, via un fichier XML, vous pouvez décrire le comportement (visuel) de votre composant et indiquer un graphisme à adopter lorsque votre composant passe à l'état « pressé » ou qu'il obtient le focus, etc.
Exemple :

Code xml : Sélectionner tout
1
2
3
4
5
6
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
	<item android:state_focused="true" android:color="@color/testcolor1"/> 
	<item android:state_pressed="true" android:state_enabled="false" android:color="@color/testcolor2" /> 
	<item android:state_enabled="false" android:color="@color/testcolor3" /> 
	<item android:color="@color/testcolor5"/> 
</selector>
Ainsi, via ce code, votre bouton changera de couleur en fonction de son état (enable/disable, pressed, focused, normal).
Pour affecter un Selector à votre composant, cela se passe dans votre layout XML :

Code xml : Sélectionner tout
android:background="@drawable/selector_bouton"
Ici dans l'exemple, c'est la propriété « background » qui est impactée.
Plus de détails par ici : http://developer.android.com/guide/t...html#StateList

Mis à jour le 8 décembre 2010 Mickael_LT

Le SDK d'Android propose un mécanisme de « 9-patch » pour simplifier la tâche des développeurs pour gérer efficacement le graphisme des composants susceptibles de changer de taille.
À partir de votre dessin initial, vous spécifiez des zones extensibles. Ces zones s'adapteront automatiquement en fonction de la taille désirée.
Un outil existe pour convertir vos graphismes en 9-patch : Draw9patch .
Plus de détails par ici : http://developer.android.com/guide/t...html#NinePatch

Mis à jour le 8 décembre 2010 Mickael_LT

La méthode présentée ici n’est valide qu’à partir de l’API 11 (HONEYCOMB). Brièvement les modifications s’effectuent dans le fichier manifest.xml. Il vous suffit de choisir un sous thème de Theme.Holo.Wallpaper comme thème de votre application. Dans le cas où vous voulez rendre transparente une Activity donnée, le principe ne change pas.

Fichier manifest.xml :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
	package="com.example.yabolank.apptransparent" > 
	<application 
		android:allowBackup="true" 
		android:icon="@mipmap/ic_launcher" 
		android:label="AppTransparent" 
		android:theme="@android:style/Theme.Holo.Wallpaper" > 
		<activity 
			android:name=".EcranPrincipal" 
			android:label="Accueil" > 
			<intent-filter> 
				<action android:name="android.intent.action.MAIN"/> 
				<category android:name="android.intent.category.LAUNCHER"/> 
			</intent-filter> 
		</activity> 
	</application> 
</manifest>

Fichier mon_layout.xml :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
	xmlns:tools="http://schemas.android.com/tools" 
	android:layout_width="match_parent" 
	android:layout_height="match_parent" 
	android:background="#886f18c1" 
	tools:context=".EcranPrincipal"> 
  
	<Button 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content" 
		android:layout_centerInParent="true" 
		android:text="Salut ! Suis un Button" /> 
</RelativeLayout>

Fichier EcranPrincipal.java :

Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  
package com.example.yabolank.apptransparent; 
  
import android.os.Bundle; 
import android.app.Activity; 
  
public class EcranPrincipal extends Activity { 
  
	@Override 
	protected void onCreateBundle savedInstanceState) { 
		super.onCreate(savedInstanceState); 
		setContentView(R.layout.activity_ecran_principal); 
	} 
}

Mis à jour le 16 avril 2016 lankoande

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.