Pour contrôler l'oriantation de l'écran, utilisez la méthode suivante :
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Affichage en mode portrait
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // Affichage en mode paysage
Ajoutez cette ligne après l'appel à setContentView(R.layout.activity_one); dans votre classe d'activité.
- Affichage et saisie en ligne unique
Pour configuerr le texte pour s'afficher sur une seule ligne :
<!-- Configuration de l'affichage du texte sur une seule ligne -->
android:singleLine="true";
- Implémentation de TabActivity
a. Fichier de mise en page :
<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"
tools:context=".ActiviteDeux" >
<TabHost
android:id="@+id/tabHostLivres"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/livresLus"
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
>
<TextView
android:text="La Frontière"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="La Cité"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="Le Cerf-voliste"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/livresEnCours"
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
>
<TextView
android:text="L'Amour à la ville"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="Mille Soleils"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="Vivre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/livresALire"
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
>
<TextView
android:text="Cent Ans de Solitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="L'Éléphant dans la pièce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="Confession"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</TabHost>
</RelativeLayout>
b. Code de l'activité :
public class ActiviteDeux extends TabActivity {
public TabHost tabHostLivres = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tabHostLivres = getTabHost();
LayoutInflater.from(this).inflate(R.layout.activite_deux, tabHostLivres.getTabContentView(), true);
tabHostLivres.addTab(tabHostLivres.newTabSpec("lus").setIndicator("Lus").setContent(R.id.livresLus));
tabHostLivres.addTab(tabHostLivres.newTabSpec("encours").setIndicator("En cours").setContent(R.id.livresEnCours));
tabHostLivres.addTab(tabHostLivres.newTabSpec("alire").setIndicator("À lire").setContent(R.id.livresALire));
}
}
Rmearque : Actuellement, l'approche recommandée est d'utiliser ViewPager avec des fragments.
- Suggestions de saisie de texte
a. Code de mise en page :
<AutoCompleteTextView
android:id="@+id/acTextViewNom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Entrez le nom :"
android:textColor="#000"
android:maxLength="10"
/>
<MultiAutoCompleteTextView
android:id="@+id/macTextViewVille"
android:layout_below="@id/acTextViewNom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Entrez la ville :"
android:textColor="#000"
android:maxLength="5"
/>
b. Code de l'activité :
public class ActiviteCinq extends Activity {
private AutoCompleteTextView acTextViewNom;
private MultiAutoCompleteTextView macTextViewVille;
private String [] noms = {"Alice","Bob","Charlie","David","Eve"};
private String [] villes = {"Paris","Londres","Tokyo","New York","Berlin"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activite_cinq);
acTextViewNom = (AutoCompleteTextView) findViewById(R.id.acTextViewNom);
macTextViewVille = (MultiAutoCompleteTextView) findViewById(R.id.macTextViewVille);
ArrayAdapter<string> adaptNoms = new ArrayAdapter<string>(this, android.R.layout.simple_dropdown_item_1line, noms);
acTextViewNom.setAdapter(adaptNoms);
ArrayAdapter<string> adaptVilles = new ArrayAdapter<string>(this, android.R.layout.simple_dropdown_item_1line, villes);
macTextViewVille.setAdapter(adaptVilles);
macTextViewVille.setThreshold(1); // Définir le nombre de caractères pour commencer la correspondance
macTextViewVille.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); // Définir le séparateur
}
}
</string></string></string></string>
- Envoi de diffusion (Broadcast)
a. Création du contenu de diffusion :
public class ActiviteUne extends Activity {
final String ACTION_DIFFUSION = "com.exemple.DiffusionDemo"; // Adresse de diffusion personnalisée
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activite_une);
Intent intent = new Intent(ACTION_DIFFUSION);
intent.putExtra("nom", "Samsung"); // Contenu de la diffusion
ActiviteUne.this.sendBroadcast(intent); // Envoyer la diffusion
}
}
b. Déclaration dans AndroidManifest.xml :
<!-- Définir le récepteur de diffusion -->
<receiver
android:name="com.exemple.MonRecepteurDiffusion"
android:enabled="true"
>
<intent-filter>
<action android:name="com.exemple.DiffusionDemo" />
</intent-filter>
</receiver>
c. Réception de la diffusion :
public class MonRecepteurDiffusion extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String nom = intent.getStringExtra("nom"); // Recevoir les données de la diffusion
Toast.makeText(context, " " + nom, Toast.LENGTH_SHORT).show();
}
}
- Vérification de l'état du réseau utilisateur
public class ActivitePrincipale extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activite_principale);
// Obtenir l'objet de connexion réseau
ConnectivityManager gestionnaireConnexion = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo infoReseau = gestionnaireConnexion.getActiveNetworkInfo();
Toast.makeText(ActivitePrincipale.this, "Réseau " + estDisponible(infoReseau.isAvailable()) + "," + "Réseau " + estConnecte(infoReseau.isConnected()) + "," + "Connexion réseau " + existe(infoReseau.isConnected()), Toast.LENGTH_LONG).show();
}
String estDisponible(Boolean disponible) {
String statut = "indisponible";
if (disponible) {
statut = "disponible";
}
return statut;
}
String estConnecte(Boolean connecte) {
String statut = "non connecté";
if (connecte) {
statut = "connecté";
}
return statut;
}
String existe(Boolean existe) {
String statut = "n'existe pas !";
if (existe) {
statut = "existe !";
}
return statut;
}
}
Remarque : Ajoutez la permission dans AndroidManifest.xml : <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- Stockage avec SharedPreferences
SharedPreferences prefs = getSharedPreferences(NOM_FICHIER, Context.MODE_APPEND);
Editor editeur = prefs.edit(); // Obtenir l'objet éditeur
editeur.clear();
editeur.putString("nom", nomUtilisateur);
editeur.putString("motDePasse", motDePasse);
editeur.commit(); // Soumettre et sauvegarder le contenu
Remarque : NOM_FICHIER est un identifiant unique que nous définissons pour faciliter la recherche et la modification.
- Récupération du contenu de SharedPreferences
SharedPreferences prefs = getSharedPreferences(NOM_FICHIER, Context.MODE_PRIVATE);
String nomRecupere = prefs.getString("nom", "");
String motDePasseRecupere = prefs.getString("motDePasse", "");
Remarque : NOM_FICHIER doit correspondre à celui défini précédemment pour récupérer le contenu sauvegardé. La méthode getString("nom", "") prend deux paramètres : le premier est l'étiquette des données stockées, et le second est la valeur de retour par défaut si les données n'existent pas.
- Utilisation de Toast
a. Forme système intégrée :
Toast.makeText(getApplicationContext(), "Notification système intégrée", Toast.LENGTH_SHORT).show();
b. Forme personnalisée :
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); // Définir la position d'affichage
toast.setDuration(Toast.LENGTH_LONG); // Définir la durée d'affichage
toast.setView(getLayoutInflater().inflate(R.layout.activite_deux, null)); // Définir une vue personnalisée
toast.show();