Je développe une application sous Android et je dois prendre en charge toutes les tailles et densités d'écran. J'ai donc créé un dossier différent pour la mise en page: layout-small layout-large
et layout
.
Ensuite, j'ai créé un dossier différent pour l'image: ldpi, mdpi
et hdpi
. Dans tous les dossiers pouvant être dessinés, l’image doit être de taille différente, vrai? Je demande à cette cause si j'ai un téléphone avec une taille d'écran grande et une densité moyenne, l'image affichée sera plus petite et ne prendra pas la bonne taille?
Vous trouverez ci-dessous une liste des répertoires de ressources d’une application proposant différentes conceptions pour différentes tailles d’écran et différentes images bitmap pour les écrans de petite, moyenne, grande et très haute densité.
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png // bitmap for medium density
res/drawable-hdpi/my_icon.png // bitmap for high density
res/drawable-xhdpi/my_icon.png // bitmap for extra high density
Le code suivant dans le manifeste prend en charge tous les dpis.
<supports-screens Android:smallScreens="true"
Android:normalScreens="true"
Android:largeScreens="true"
Android:xlargeScreens="true"
Android:anyDensity="true" />
Et vérifiez aussi ma SO réponse .
Vous pouvez utiliser sdp unité de taille au lieu de unité de taille dp. L'unité sdp size est relative à la taille de l'écran et est donc souvent préférable pour cibler plusieurs tailles d'écran.
Utilisez-le avec précaution! Par exemple, dans la plupart des cas, vous devez encore concevoir une présentation différente pour les tablettes.
À partir de Android 3.2 (API niveau 13), les groupes de tailles (dossiers petits, normaux, grands, xlarge) sont déconseillés au profit d'une nouvelle technique de gestion des tailles d'écran en fonction de la largeur d'écran disponible.
Si vous souhaitez utiliser différentes images pour les appareils haute résolution et les autres appareils, vous pouvez définir une image distincte pour chaque dossier. Sinon, placez un dossier de disposition dessiné uniquement pour certaines images que vous pouvez également créer en 9 patchs.
vous avez besoin d'une autorisation dans le manifeste pour plusieurs écrans lien de support
<supports-screens Android:resizeable=["true"| "false"]
Android:smallScreens=["true" | "false"]
Android:normalScreens=["true" | "false"]
Android:largeScreens=["true" | "false"]
Android:xlargeScreens=["true" | "false"]
Android:anyDensity=["true" | "false"]
Android:requiresSmallestWidthDp="integer"
Android:compatibleWidthLimitDp="integer"
Android:largestWidthLimitDp="integer"/>
Cela semble noble quand il s’agit de prendre en charge plusieurs tailles d’écran. Les résultats suivants donnent de meilleurs résultats.
res/layout/layout-w120dp
res/layout/layout-w160dp
res/layout/layout-w240dp
res/layout/layout-w160dp
res/layout/layout-w320dp
res/layout/layout-w480dp
res/layout/layout-w600dp
res/layout/layout-w720dp
Contrôlez la largeur et la hauteur du périphérique à l'aide de métriques d'affichage
Placez/déterminez quelle disposition correspond à la largeur résultante de l'appareil.
let smallestScreenWidthDp="assume some value(Which will be derived from Display metrics)"
Tout doit être vérifié avant setContentView (), sinon vous vous posez des problèmes
Configuration config = getResources().getConfiguration();
Configuration config = getResources().getConfiguration();
if (config.smallestScreenWidthDp >= 600) {
setContentView(R.layout.layout-w600dp);
} else {
setContentView(R.layout.main_activity);
}
En haut, j'ai créé tellement de mises en page pour s'adapter à plusieurs écrans, tout dépend de vous, que vous le souhaitiez ou non. .
J'espère que cela vous aidera beaucoup. Peu utilisaient des bibliothèques tierces. Cela réduira peut-être votre travail, mais ce n'est pas la meilleure pratique. Habituez-vous aux meilleures pratiques Android.
Vous pouvez déterminer les dimensions de l'écran de manière dynamique
Display mDisplay= activity.getWindowManager().getDefaultDisplay();
int width= mDisplay.getWidth();
int Height= mDisplay.getHeight();
La mise en page peut être définie à l'aide de la largeur et de la hauteur obtenues à l'aide de cette méthode.
utiliser la bibliothèque sdp fournie dans github
vous pouvez créer des bitmaps pour la résolution/taille maximale de votre application et les redimensionner dans le code (au moment de l'exécution)
consultez cet article http://nuvornapps-en.blogspot.com.es/
Ajout à @ud_an
Ce n'est pas une bonne pratique de créer des dossiers différents pour les mises en page. Créez votre mise en page de sorte que cela fonctionne bien avec toutes les tailles d'écran. Pour ce faire, jouez avec les attributs de disposition . Il vous suffit d’avoir différentes images pour les types hdpi, mdpi et ldpi. Le reste sera géré par Android OS.