Adaptation de l'écran de développement Android

Comme nous le savons tous, les modèles Android ont différentes tailles, donc l'adaptation d'écran est devenue une partie très importante du développement Android. L'adaptation d'écran Android peut être rencontrée par certains développeurs. Partageons l'adaptation d'écran aujourd'hui. Vous constaterez que l'adaptation d'écran Android peut également être très simple.

concepts de base

Certains concepts qui doivent être compris dans l'adaptation d'écran Android peuvent être ennuyeux, mais comme le dit le proverbe, "celui qui veut être bon au travail doit d'abord être une arme tranchante", ce qui se traduit par "le type d'arme dont vous disposez détermine le type d'arme que vous possédez. "Bird", une fois que vous aurez compris ces concepts, l'adaptation à l'écran vous semblera naturellement plus facile.

  • px

C'est une abréviation du mot anglais pixel, qui signifie pixel, un point sur l'écran. Ce que nous appelons habituellement la résolution comme 480X800 fait référence aux pixels.

Dans le domaine du design, les pixels sont la plus petite unité utilisée pour calculer les images numériques. L'image affichée dans l'ordinateur n'est pas composée de lignes continues, mais composée de nombreux petits points invisibles à l'œil nu. Si vous agrandissez l'image plusieurs fois, vous constaterez que ces tons continus sont en fait composés de nombreux petits points de couleurs similaires. Ces petits points sont les plus petits "pixels" unitaires qui constituent l'image. Puisqu'il s'agit de la plus petite unité d'affichage indépendante, px est un entier, donc 0,5px n'apparaîtra pas. Tel que:

Regardez cette lumière LED colorée (taille originale)

Pouvez-vous imaginer que c'est sa vraie couleur? (Après un zoom avant)

  • dans

Représente les pouces, qui est la taille physique de l'écran. Chaque pouce est égal à 2,54 centimètres. Par exemple, les tailles d'écran des téléphones portables dont nous parlons souvent sont 5 pouces (anglais) et 4 pouces (anglais) pour cet appareil. Ces dimensions correspondent à la longueur diagonale de l'écran. Si l'écran du téléphone mobile mesure 4 pouces, cela signifie que la longueur diagonale de l'écran (zone visible) du téléphone mobile est de 4 X 2,54 = 10,16 cm.

  • dpi

dpi est l'abréviation de points par pouce, points par pouce, c'est-à-dire le nombre de pixels par pouce. Par exemple, un téléphone mobile de résolution 320 x 480 mesure 2 pouces de large et 3 pouces de haut. Le nombre de pixels contenus dans chaque pouce est de 320/2 = 160 dpi (horizontal) ou 480/3 = 160 dpi (vertical). 160 est le dpi de ce téléphone mobile. Les valeurs horizontales et verticales sont les mêmes, car la plupart des écrans de téléphones mobiles utilisent des pixels carrés.

  • densité

Densité de l'écran, la relation entre densité et dpi est densité = dpi / 160

  • dp

C'est dip, l'abréviation de pixels indépendants de l'appareil, pixels indépendants de l'appareil, une unité unique à Android, sur un écran avec une densité d'écran de dpi = 160, 1dp = 1px.

  • sp

Semblable à dp, il est généralement utilisé pour définir la taille de la police. La différence avec dp est qu'il peut être mis à l'échelle en fonction des préférences de taille de police de l'utilisateur.

Android dessiné

Après avoir créé un nouveau projet Android, nous devrions pouvoir voir de nombreux dossiers dessinables, correspondant à différents dpi

  • drawable-ldpi (dpi = 120, densité = 0,75)

  • drawable-mdpi (dpi = 160, densité = 1)

  • drawable-hdpi (dpi = 240, densité = 1,5)

  • drawable-xhdpi (dpi = 320, densité = 2)

  • drawable-xxhdpi (dpi = 480, densité = 3)

La plupart des tutoriels Android sur le marché enseignent un ensemble de ressources d'image pour chaque dpi. C'est certainement une solution, mais c'est aussi une méthode très stupide, qui ajoute beaucoup à l'art ou au design. Sans parler de la charge de travail, cela rendra également votre package apk très volumineux. Existe-t-il donc un bon moyen d'assurer l'adaptation de l'écran tout en minimisant les ressources de conception, et en même temps, il est préférable d'utiliser uniquement un ensemble de ressources d'image dpi? Expliquons la méthode résumée dans le prochain projet.

Tout d'abord, vous devez être clair sur le concept de rendu automatique. Le SDK Android sélectionnera automatiquement le fichier de ressources correspondant à la taille de l'écran pour le rendu. Si le SDK détecte que le dpi de votre téléphone est de 160, il ira d'abord dans le dossier drawable-mdpi pour trouver les ressources d'image correspondantes. Notez que seulement Tout d'abord, supposons que le dpi de votre téléphone est de 160, mais que vous ne disposez que des fichiers de ressources d'image correspondants dans le dossier xhpdi et que le programme peut fonctionner normalement. Donc, en théorie, il est normal de ne fournir qu'une ressource image d'une spécification. Si seules des images de la spécification ldpi sont fournies, il ne sera pas clair si l'image est agrandie pour un téléphone mobile avec une grande résolution, il est donc nécessaire de fournir un ensemble de l'assistance maximale dont vous avez besoin ppp, de sorte que même si le téléphone portable de l’utilisateur a une petite résolution, l’image est toujours très claire lorsqu'elle est réduite.

xhdpi devient le premier choix

上面说了只需要提供一套大的dpi的图片就ok了,现在市面手机分辨率最大可达到1080X1920的分辨率,如Nexus5,dpi属于xxhdpi,但是毕竟还没普及,目前市面上最普遍的高端机的分辨率还多集中在720X1080范围,也就是多集中在xhdpi,所以目前来看xhpdi规格的图片成为了首选。当然随着技术规格的提高以后发展,以后可能市场上xxdpi的手机会越来越普遍,但这是后话。

设计资源紧张怎么办?

在现在的App开发中,基本都会有iOS和Android版本,有些公司为了保持App不同版本的体验交互一致,还有些公司的设计资源可能比较紧张,这些情况下iOS和Android版本基本是一个设计师主导,而大多数情况下设计师可能更会以iPhone手机为基础进行设计,包括后期的切图之类的。这个时候身为Android开发人员你是否还要求设计师单独为Android端切一套图片资源呢?这会让你们的设计师崩溃的,下面就来告诉一个项目中总结的更棒的方法。

相信设计师们一般都会用最新的iPhone5(5s和5的尺寸以及分辨率都一样)来做原型设计,而iPhone5的屏幕分辨率为640X1164, 屏幕尺寸为4英寸,根据勾股定理(a^2 + b^2 = c^2)640^2+1164^2=1764496, 然后再对其开根号可求出屏幕对角线的分辨率为:1328,除以4可得出iphone5的dpi:1328/4≈332 可以看出iPhone5的屏幕的dpi约等于320, 刚好属于xhdpi,所以你可以很自豪的像你们的设计师说不用专门为Android端切图,直接把iPhone的那一套切好的图片资源放入drawable-xhdpi文件夹里就ok了。

wrap_content VS dp

wrap_content和dp都是在Android开发中应该经常用到的,然后它们冥冥中是有关系的。

假设你看了这篇文章后都是统一有xhdpi的资源,那么你用wrap_content完全没有问题,Android会自动为其他规格的dpi屏幕适配,比如你在xhdpi放了一张120X120px大小的图片,那么在在hdpi屏幕上显示的就只有120/2*1.5=90px大小,但是如果你不小心同样把这张图片也放入了mdpi了,这个时候用wrap_content显示就会有问题,具体看下面的例子:

例如假设你只在drawable_xhdpi文件夹下放了test图片,xhdpi的设备会去xhdpi文件夹下找到test图片并直接显示,而mdpi的设备优先会去mdpi文件夹里查找test图片,但是没找到,最后在xhdpi文件夹下找到,然后会自动根据density计算并缩放显示出来,实际显示出来的大小是120/2=60px, 所以整体的显示比例才会看起来比较正常

  • mdpi

  • xhdpi

但是如果你在mdpi文件夹里也放入了同样的图片,那么mdpi的设备会直接去mdpi文件夹里寻找到test图片,并直接显示,而这时候显示不会缩放,实际显示大小就是120X120,在mdpi的屏幕上看起来就会比较大,如图:

通过上面整个过程,大家应该理解了Android加载资源的整个过程, wrap_content同样可以用dp来代替,就拿上面这个例子,在xhdpi文件夹内放入了一张120X120像素的test图片,宽高直接除density就得出dp的数值,即这种情况下以下代码是等同的.

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/test" />
<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:src="@drawable/test" />

总结

相信通过以上的讲解,对Android UI中的一些基本概念有个很好的理解,实际开发工作中也有一些高效的方法可以参考,应该可以应对大部分的屏幕适配工作。但是项目中仍然有一些比较特殊的适配需求满足不了,以后会针对一些特殊的需求进行示例讲解。

Je suppose que tu aimes

Origine blog.csdn.net/xhf_123/article/details/49931547
conseillé
Classement