android有太多的不同类型的手机了,这里记录一下适配过程中的一些心得
1.理解概念
屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸)。android把屏幕分为以下4 种:small,normal,large,extra large。
屏幕密度(Screen Density) - 一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点)。相比起 medium、high屏幕密度的设备,在一块确定大小的屏幕区域l密度为low的屏幕拥有的像素更少。android把屏幕密 度分为4种:low,medium,high,extra high。
分辨率(Resolution) - 屏幕上拥有的像素的总数。注意,虽然大部分情况下分辨率都被表示为“宽度×长度”,但分辨率并不意味着屏幕长宽比。在Android系统中,程序一般并不直接处理分辨率。
与密度无关的像素(Density-independent pixel,dp或dip) - 一个与密度无关的像素,在逻辑尺寸上,与一个位于像素密度为160DPI的屏幕上的像素是一致的,这也是Android平台所假定的默认显示设备。在运行的时候,平台会以目标屏幕的密度作为基准,“透明地”处理所有需要的DIP缩放操作。要把密度无关像素转换为屏幕像素,可以用这样一个简单的公式:pixels = dips * (density / 160)。举个例子,在DPI为240的屏幕上,1个DIP等于1.5个物理像素。我们强烈推荐你用DIP来定义你程序的界面布局,因为这样可以保证你的UI在各种分辨率的屏幕上都可以正常显示。
2.对图片适配理解
对不同密度的屏幕提供不同的图片。
应尽量使用点9格式的图片,不同的密度的图片对应相应的文件夹,例如high对应drawable-hdpi/
图片大小的确定:low:medium:high:extra high比例为3:4:6:8。举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra high为96×96;
对于比例3:4:6:8=120:160:240:320,在美工根据这些比例在不同的分辨率下做图,看到不同分辨率文件夹下的图片尺寸是和屏幕密度有关的,也可以想到,在mdpi的手机中,mdpi的图片占对角线下的的比例和hdpi手机下hdpi的图片的比例是一样的,所以整体布局比例是一样的,也就是证明了布局距离,边距,大小,我们都可以用dip,图片系统会用相应dpi下的资源,这样ui在不同的手机中比例会一致,只有清晰和大小之分,做到了适配;
3.总结
1)在我们开发工程中,根据现在主流的手机都是hdpi,我们可以叫美工在hdpi(240)下做好ui图,系统会自动适配 在mdpi,hdpi的图片会安装比例缩小到mdpi,这样也就相当有了mdpi,所以没必要做mdpi的图片,但mdpi放大到hdpi,就会失真;当然有些特殊的图片,就需要做好图片放到相应的目录下了,但这些图片不多,在实际开发中需要再做就可以了,例如程序的图标就需要各种分辨率下的图片;
2)需要注意的是,在hdpi手机作图,也有不同的屏幕,为了避免大小屏幕的差异,在480x800做图,在小屏幕布局时候注意一下整体的高度和宽度不要超出就可以了。
3)作图时候,给出图片和图片之间的间隔,控件间的间隔,为p1,那求手机上的p2,知道像素和密度是正比的,p2=p1*d/240(240为作图时候的参考密度)
4.相应的一些代码
//dip转为px public static int dip2px(Context ctx, int dpValue) { float scale = ctx.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); }
//我们知道系统的mdpi,hdpi这行图片资源文件夹是会根据手机分辨率去获取,如果相应的文件夹没有就会获取其他的来自动缩放,这样是很方便的;但是如果我们要读取sdcard的图片和assets的图片那就不可以了,所以我们需要转换为drawable,来设置图片的密度来进行自动缩放 public static Drawable getDrawable(Context ctx, Bitmap bitmap) { BitmapFactory.Options options = new BitmapFactory.Options(); //设置工厂以240的密度来读取图片文件,居于这个图片是在240下做的图 options.inDensity = 240; BitmapDrawable image = new BitmapDrawable(BitmapFactory.decodeFile("240.png",options)); //设置图片在终端中以终端本身的密度来显示图片 image.setTargetDensity(ctx.getResources().getDisplayMetrics()); //image.setTargetDensity((int) (density * (density * 1.0f / 240))); return d; }
相关推荐
"Android屏幕适配"是Android开发中的核心概念,它涉及到尺寸单位、布局权重、资源多版本、比例适配以及使用百分比布局等多种技术。 1. 尺寸单位: - dp (density-independent pixels):与设备像素密度无关的像素...
本资源包"Android屏幕适配资源"专注于解决这一问题,提供了values资源,能够帮助开发者轻松实现不同屏幕尺寸的适配。接下来,我们将详细讨论Android屏幕适配的核心概念、方法以及如何使用此资源包。 一、屏幕适配的...
现在,针对"Android屏幕适配:dimens自动生成工具",这个工具的主要功能是自动化生成多个`dimens.xml`文件,减少手动创建和维护的工作量。使用该工具,开发者只需输入基本的尺寸数据,工具会根据预设的屏幕密度配置...
【Android屏幕适配方案终极版】是Android开发者面临的一个重要课题,尤其是在当今各种设备尺寸繁多的情况下。今日头条作为一款广受欢迎的信息聚合应用,其屏幕适配策略无疑具有很高的参考价值。这个低成本的解决方案...
"android屏幕适配px工具类"就是为了解决这一问题而设计的,它可以帮助开发者更方便地处理像素(px)单位转换,确保应用在不同屏幕上的显示效果一致。 在Android系统中,屏幕适配的核心是理解并利用密度独立像素(dp...
本文将详述几种主流的Android屏幕适配方案,并进行对比分析,帮助开发者选择最适合项目需求的方法。 一、密度无关像素(DP/SP) Android系统采用密度无关像素(DP)作为单位来设计界面,以确保在不同密度的屏幕上...
本篇文章将详细探讨几种常见的Android屏幕适配方案,帮助开发者解决不同设备间界面显示不一致的问题。 1. **使用比例单位(dp、sp)** Android提供了密度无关像素(dp)和可缩放像素(sp)作为尺寸单位。dp用于长度和...
Android屏幕适配生成文件
android 屏幕适配方案小工具(可执行jar包)
A low-cost Android screen adaptation solution (今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案). Overview Pixel 2 XL | 1440 x 2880 | 560dpi: Pixel XL | 1440 x 2560 | 560dpi: ...
以下是一些关键的Android屏幕适配策略和技术: 1. **使用比例和相对布局(Relative Layout)**: - 不直接使用绝对像素值,而是使用比例(dp/dip)来定义控件大小,这样在不同密度的屏幕上会自动调整。 - 相对...
本篇文章将深入探讨Android屏幕适配中的smallestWidth维度,以及如何使用对应的尺寸文件来优化应用界面。 首先,了解"smallestWidth"的概念。smallestWidth是指设备屏幕在横屏或竖屏状态下可用来显示内容的最小宽度...
android屏幕适配方法
标题中的"Android屏幕适配工具类"正是这样一个解决方案,它能自动生成适配不同屏幕尺寸的dimens资源文件,从而简化开发工作。 首先,我们来看看Android屏幕适配的基本概念。Android系统通过dp(density-independent...
本篇将详细讲解"android屏幕适配工具"的相关知识点,以及如何利用提供的"autolayout.jar"和"res"资源进行操作。 首先,我们要理解Android的屏幕适配机制。Android系统通过资源目录(如values、layout等)下的不同...
"android屏幕适配demo"是一个实例,它展示了如何确保应用程序在不同设备上看起来一致并保持良好的用户体验。在这个demo中,主要关注的是视图大小的调整和布局管理,以实现跨设备的兼容性。 首先,Android提供了多种...
总的来说,百分比适配是Android屏幕适配的一种有效策略,它简化了适配过程,使得开发者可以专注于应用的功能而非设备差异。通过正确理解和运用百分比适配技术,可以显著提高应用的用户体验。在实际开发中,结合其他...
Android 屏幕适配思维导图,花了两天的时间总结出来的,看思维导图会以一个整体的印象,有利于快速理解Android 屏幕适配的问题。
本项目"Android代码-一种非常好用的Android屏幕适配"提供了一种有效的解决方案,帮助开发者解决不同屏幕尺寸和像素密度下的显示问题。项目名称为"ScreenAdaptation",表明它专注于屏幕适应性策略,旨在提升应用在...