Analyse liée à l'ingénierie (divers fichiers, accès aux ressources)


Introduction à cette section :

J'ai parlé de beaucoup de choses qui semblent n'avoir rien à voir avec notre développement Android, n'est-ce pas ? sachez-le plus tard, quand vous regarderez en arrière ! Eh bien, dans cette section, nous utiliserons le projet Hello World créé précédemment comme point d'entrée pour comprendre la structure du projet. Et deux façons d’accéder aux ressources sous Android ! L'IDE utilisé dans les tutoriels suivants est Android Studio, car Google a officiellement annoncé il y a quelques jours qu'il mettrait fin au support des autres environnements de développement IDE avant la fin de l'année !


1. Analyse de la structure du projet d'ingénierie :

La majeure partie de notre temps de développement est consacrée à la partie suivante :

Ensuite, nous expliquerons les éléments clés :

  • java : Où nous écrivons le code Java, les fonctions métier Tout est implémenté ici

  • res : Un endroit pour stocker nos divers fichiers de ressources, notamment des images, des chaînes, des animations, de l'audio, etc., ainsi que divers fichiers XML de formulaires


1.res introduction du dossier de ressources :

PS : En parlant de ce répertoire res , en plus Le Le répertoire d'actifs est mentionné. Bien qu'il n'existe pas ici, nous pouvons le créer nous-mêmes. La différence entre les deux est de savoir si tous les fichiers de ressources sous le premier généreront les identifiants de ressources correspondants sous le fichier R.java, tandis que le second non. ; dans le premier, nous pouvons accéder à la ressource correspondante directement via l'identifiant de la ressource ; tandis que dans le second, nous devons la lire sous la forme d'un flux binaire via AssetManager ! D'ailleurs, ce fichier R peut être compris comme un dictionnaire, et chaque ressource sous res générera ici un identifiant unique !

Parlons ensuite des répertoires associés dans le répertoire de ressources res :

PS :Les répertoires mipmap suivants n'existent pas dans Eclipse. Ils sont tous dessinables dans Eclipse. Au début, il n'y a en fait pas beaucoup de différence, c'est juste que l'utilisation de mipmap fournira une certaine optimisation des performances lors de la mise à l'échelle des images, pour différentes résolutions, le système sélectionnera les images correspondantes sous hdpi, mdpi, xmdpi et xxhdpi en fonction de l'écran. résolution, afin que vous puissiez décompresser les images d'autres personnes. apk, vous pouvez voir les images du même nom dans le répertoire ci-dessus, qui sont disponibles dans les quatre dossiers, mais les tailles et les pixels sont différents ! Bien sûr, ce n'est pas absolu. Par exemple, si nous mettons toutes les images sous drawable-hdpi, même si le téléphone mobile est utilisé. Les ressources d'images sous le dossier ldpi doivent être chargées, mais il n'y a pas d'images sous ldpi, donc les images sous hdpi seront toujours chargées ! De plus, il y a une autre situation : par exemple, si c'est hdpi, c'est dans le répertoire mdpi, mais pas dans ldpi, alors les ressources dans mdpi seront chargées ! Le principe est d'utiliser le niveau de densité le plus proche ! De plus, si vous souhaitez empêcher Android de charger des ressources dans des dossiers différents en fonction de la densité de l'écran, ajoutez simplement le champ android:anyDensity="false" au fichier AndroidManifest.xml ! 🎜>

1. Parlons de

ImagesRessources :

  • drawable : stocke divers fichiers bitmap, (.png, .jpg, .9png, .gif, etc.) De plus, il peut s'agir d'autres fichiers XML fichiers de type drawable

  • mipmap-hdpi : Haute résolution, généralement on jette les images ici

  • mipmap-mdpi : Résolution moyenne, rarement sauf si le téléphone compatible est très ancien

  • mipmap-xhdpi : Ultra haute résolution, Le matériau de l'écran des téléphones portables va de mieux en mieux, et on estime qu'il passera lentement à cela à l'avenir

  • mipmap-xxhdpi : Super haute résolution, disponible sur machines haut de gamme Reflect

2. Parlons de mise en page ressources :

  • mise en page : dans ce répertoire Ce qui est stocké est notre fichier de mise en page. De plus, sur certains modèles spécifiques, nous faisons des adaptations d'écran, comme les téléphones mobiles 480*320, nous allons créer un autre ensemble de mises en page, juste un dossier comme layout-480x320 !

3. Parlons des ressources du menu :

  • menu : existait avant Le bouton de menu physique, c'est-à-dire que la touche de menu est couramment utilisée sur les téléphones mobiles, mais elle n'est pas beaucoup utilisée maintenant. La ressource XML liée aux éléments de menu peut être écrite ici. Je me demande si Google proposera quelque chose de nouveau à remplacer. le menu~

4. Parlons ensuite du répertoire des valeurs :

  • demens.xml : Définir les ressources de taille

  • string.xml : Définir les ressources de chaîne

  • styles.xml : Définir les ressources de style

  • colors.xml : Définir les ressources de couleur

  • arrays.xml : Définir les ressources du tableau

  • attrs.xml : Plus utilisé lors de la personnalisation des contrôles , en personnalisant les propriétés des contrôles !

  • Le fichier de thème de thème est très similaire aux styles, mais il affectera l'activité ou l'activité spécifiée dans l'ensemble de l'application, modifiant généralement l'apparence de la fenêtre ! Il peut être utilisé via setTheme dans le code Java, ou ajouter des attributs de thème à <application...> dans Androidmanifest.xml ! PS : Vous avez peut-être vu de tels répertoires de valeurs : valeurs-w820dp, valeurs-v11, etc. Dans le premier, w représente la tablette et 820dp représente la largeur de l'écran tandis que v11 signifie qu'il sera utilisé après l'API (11 ; ), c'est-à-dire Android 3.0 de !

5. Parlons ensuite du répertoire brut : Utilisé pour stocker diverses ressources natives (audio, vidéo, certains fichiers XML, etc.), on peut obtenir le flux binaire de la ressource via openRawResource(int id) ! En fait, c'est similaire aux Assets, mais les ressources ici généreront un ID de ressource dans le fichier R

6. Enfin, il y a l'animation Il existe deux types d'animation : l'animation d'attribut et l'animation d'interpolation : <. 🎜>

  • animator : fichier XML qui stocke les animations d'attributs

  • anim : fichier XML qui stocke les animations interpolaires


2. Comment utiliser ces ressources

Eh bien, maintenant que vous savez quelles sont les ressources, apprenons à les utiliser : Comme mentionné précédemment, tous nos fichiers de ressources généreront un ID de ressource sous le fichier R.java. Nous pouvons utiliser cet ID de ressource pour compléter l'accès aux ressources. Il existe deux situations d'utilisation : utilisé dans le code Java et utilisé dans le code XML.

Utilisé dans le code Java :

Texte Java :

txtName.setText(getResources().getText(R.string.name ));

Image :

imgIcon.setBackgroundDrawableResource(R.drawable.icon);

Couleur :

txtName.setTextColor(getResouces().getColor(R.color.red));

Mise en page :

setContentView(R.layout.main) ;

Contrôle :

txtName = (TextView)findViewById(R.id.txt_name);

en code XML Utilisez :

Vous pouvez l'obtenir via @xxx, par exemple, obtenir du texte et des images ici :

<TextView android:text="@string/hello_world" android:layout_width ="wrap_content" android:layout_height="wrap_content" android:background = "@drawable/img_back"/>

2. En savoir plus sur trois fichiers :

D'accord, nous analyserons ensuite les trois fichiers les plus importants du projet : MainActivity.java, fichier de mise en page :activity_main et fichier de configuration Android : AndroidManifest.xmlPS : Le contenu de l'image peut être un peu différent, je n'ai pas le temps de faire des photos, j'espère que vous pouvez comprendre~

MainActivity.java :

Le code est le suivant

package jay.com.example.firstapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

classe publique MainActivity étend AppCompatActivity {
@Override
protected void onCreate(Bundle savingInstanceState ) {
super.onCreate(savedInstance State);
setContentView(R.layout.activity_main);
}
}

代码分析:

布局文件:activity_main.xml:

代码如下:

<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=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        androïde :text="@string/hello_world" />

</RelativeLayout>

Analyse du code :

Nous définissons une disposition linéaire LinearLayout et définissons l'architecture que nous devons utiliser dans l'espace de noms XML, qui vient de ①

Fichier de configuration AndroidManifest.xml :

Le code est le suivant :

<?xml version="1.0" encoding="utf-8"?>
< ;manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jay.com.example.firstapp" >

<application
android :allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activité
                                                  android:name=".MainActivity" action android:name="android .intent.action.MAIN" />

                                                                                                ; ;

</manifeste>

Analyse du code :

En plus de ce qui précède :

① Si l'application contient d'autres composants, la syntaxe de spécification de type doit être utilisée . déclarer dans ce fichier Serveur : élément BroadcastReceiver élément ContentProvider élément Élément IntentFilter<intent-filter>

②Déclaration d'autorisation : Déclarez explicitement les autorisations requises par le programme dans ce fichier pour empêcher l'application d'utiliser le service de manière incorrecte et d'y accéder de manière inappropriée. ressources, améliorant à terme la robustesse des applications Android La phrase android.permission.SEND_SMS indique que l'application a besoin d'une autorisation pour envoyer des messages et l'utilisateur sera invité lors de l'installation. Les autorisations pertinentes peuvent être trouvées dans le manuel de référence du SDK !


Résumé de cette section :

Dans cette section, nous avons une compréhension détaillée de notre projet Hello World, quels sont les répertoires pertinents et les fichiers de ressources sous res sont Lesquelles, quelles sont leurs fonctions et comment utiliser ces ressources ! Parallèlement, les trois documents les plus importants du projet sont expliqués en détail à travers des dessins ! À ce stade, je pense que vous avez déjà une compréhension générale du projet Android ! Merci~