android适配

Android 适配方案

空扰寡人 提交于 2020-01-02 18:38:59
1.先说要怎么做,后面在慢慢讲解: 1.单位全部用dp,优先使用包裹内容和填充父窗体和权重来完成布局。 2.通过dimens文件来适配,需要三套,不考虑横屏   2.1 默认的dimens.xml   放按hdpi适配的参数;   2.2 hdpi的dimens.xml   放按hdpi适配的参数;   2.3 xhdpi的dimens.xml   放按xhdpi适配的参数; 3.适配的时候只用完美的完成一套xhdpi的dimens文件,然后通过代码生成hdpi的,因为就dp来说,他们有固定的比例关系,代码后面会贴出。 2.现在来讲解为什么要放这三套: 贴一个基本知识: ldpi 1dp = 0.75px 320*240 160dp = 120px mdpi 1dp = 1px 480*320 160dp = 160px hdpi 1dp = 1.5px 800*480 160dp = 240px xhdpi 1dp = 2px 1280*720 160dp = 320px<360px     180dp = 360px xxhdpi 1dp = 3px 1920*1080 160dp = 480px < 540px    180dp = 540px  这三套其实按内容来说就两种,为什么这两种可以适配主流分辨率呢? ldpi,mdpi,hdpi是一组;xhdpi和xxhdpi是一组

Android 沉浸式状态栏适配(兼容多机型)

◇◆丶佛笑我妖孽 提交于 2019-12-27 03:33:39
适配状态栏百度千篇一律的判断机型,由于在RN开发时设置状态栏也就一句代码的事,我翻了以下android的文档,分享一下我在项目中如何适配状态栏 状态栏适配,实则是完成以下操作: 1. 状态栏透明 ,布局直接从屏幕顶部开始,布局顶部加padding即可 2.状态栏 背景白色 时, 字体变成黑色 ,反之则设为白色 3. android6.0之前不提供修改状态栏字体颜色的方法 ,所以我采用给它设一个半透明黑色背景,突显出白色字体,类似与播放器的白色按钮一样,背景是半透明的黑色 4.有些界面需要 隐藏状态栏 (如:视频播放页等) 效果图: 一般页面适配 白色背景适配 6.0以下适配效果 下面贴出代码, 正常的activity只需要复制对应代码调用即可,封装在baseactivty或者封装成工具类都可以。 如果是单Activity多Fragment项目,可以借助navigation在NavController.setDestinationChangedListener中的addOnDestinationChangedListener接口中,判断当前显示的fragment,做出对应适配操作即可 在需要适配的activity中,加入以下方法: fun changeStatusBarTransparent(activity: Activity) { if (Build.VERSION.SDK

Android碎片化之屏幕适配

Deadly 提交于 2019-12-21 03:00:17
Android碎片化之屏幕适配 现如今,因Android系统的开放性,市场上出现了不同厂商出厂的各种android版本、分辨率、型号等设备。那对我们开发来说,碎片化绝对是一个让人头脑炸裂的问题,Android系统碎片化、Android机型屏幕尺寸碎片化、Android屏幕分辨率碎片化。市面上安卓手机的主流屏幕尺寸种类繁多,就算搞定了屏幕尺寸问题,各种分辨率又让人眼花缭乱。面对测试同学抛过来的适配问题,心肝肺都要颤一颤。今天我们就谈谈屏幕适配的解决步骤。 一、解决屏幕适配的方案都有: “布局”匹配 :使用相对布局(RelativeLayout),禁用绝对布局(AbsoluteLayout)。根据屏幕的配置来加载相应的UI布局,尺寸(size)限定符。 “布局组件”匹配 :使用"wrap_content"、"match_parent"和"weight“来控制视图组件的宽度和高度 “图片资源”匹配 :使用自动拉伸位图:Nine-Patch的图片类型 二、Android屏幕适配的一些名词含义: 屏幕尺寸: 也就是我们平时所说的某某手机是几寸屏, 比如HTC one V这款手机是3.7寸的, 这里的寸说的是英寸(inch),国际上习惯使用的单位,1inch = 2.54cm,3.7寸指的是屏幕的对角线的长度。 屏幕分辨率: 指屏幕的宽和高的像素数, 比如HTC one V是480*800的。

9102年了,再谈屏幕适配!

隐身守侯 提交于 2019-12-19 11:44:25
前言 众所周知,Android授权的厂商不计其数,生产出的机型也数不胜数,导致尺寸碎片化很严重。 当然,都9102年了,大家逐渐得到了最优解,国内主流机型基本上都在720、1080、1440徘徊,最多高度上各有所长,但是还是保留着不少其他分辨率的手机,先来看一组数据(来源:友盟) 如图所证上述结论的正确性,但是可以看到,每年都有比例不小的其他尺寸的手机占据着市场份额,更何况那些还在服役的古董机器。我相信,这部分用户群是不可能被产品经理所割舍的。 为了解决这个问题,我们当然可以: 善于使用RelativeLayout、Linearlayout、ConstraintLayout; 合理使用wrap_content、match_content; 使用minHeight、minWidth、lines、ellipsize等等属性; 使用dp、sp单位; 以某个页面为单位针对不同的手机使用不同的布局、图片、dimen; 但是我想说,以上种种,只是一个Android开发应该具备的基本素质。 也许有人会问,这些还不够吗?而且dp、sp不已经是官方适配过了的单位吗?下面我们就来逐步剖析。 为什么官方需要使用设备独立像素适配 设备独立像素(dp、sp),又叫逻辑像素,是一种用缩放因子(scale)计算出来的、和像素有一定的换算比例的、不受设备分辨率和密度(ppi)制约的尺寸单位。 那么什么是分辨率

9102年了,再谈屏幕适配!

不打扰是莪最后的温柔 提交于 2019-12-19 08:58:54
前言 众所周知,Android授权的厂商不计其数,生产出的机型也数不胜数,导致尺寸碎片化很严重。 当然,都9102年了,大家逐渐得到了最优解,国内主流机型基本上都在720、1080、1440徘徊,最多高度上各有所长,但是还是保留着不少其他分辨率的手机,先来看一组数据(来源:友盟) 如图所证上述结论的正确性,但是可以看到,每年都有比例不小的其他尺寸的手机占据着市场份额,更何况那些还在服役的古董机器。我相信,这部分用户群是不可能被产品经理所割舍的。 为了解决这个问题,我们当然可以: 善于使用RelativeLayout、Linearlayout、ConstraintLayout; 合理使用wrap_content、match_content; 使用minHeight、minWidth、lines、ellipsize等等属性; 使用dp、sp单位; 以某个页面为单位针对不同的手机使用不同的布局、图片、dimen; 但是我想说,以上种种,只是一个Android开发应该具备的基本素质。 也许有人会问,这些还不够吗?而且dp、sp不已经是官方适配过了的单位吗?下面我们就来逐步剖析。 为什么官方需要使用设备独立像素适配 设备独立像素(dp、sp),又叫逻辑像素,是一种用缩放因子(scale)计算出来的、和像素有一定的换算比例的、不受设备分辨率和密度(ppi)制约的尺寸单位。 那么什么是分辨率

转:屏幕适配

心不动则不痛 提交于 2019-12-18 20:50:29
转自: here 众所周知,Android机型尺寸各种各样,于是屏幕适配就成了Android开发中很重要的一环。Android屏幕适配可能一些开发者都会遇到这样的问题,今天就来分享下屏幕适配,你会发现其实Android屏幕适配也可以很简单。 基本概念 Android屏幕适配必须要理解的一些概念,这部分可能比较枯燥,但是俗话说的好“工欲善其事,必先利器”,翻译过来就是“有什么样的枪,决定你打什么样的鸟”,一旦这些概念你理解掌握了,屏幕适配你自然而然就觉得简单多了。 px 是英文单词pixel的缩写,意为像素,屏幕上的点。我们通常所说的分辨率如480X800就是指的像素。 在设计领域中,像素是用来计算数码影像的最小单位。计算机中显示的图像并非连续的线条组成,而是由许多肉眼看不见的小点组成。如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小点所组成,这些小点就是构成影像的最小单位“像素”。由于是最小的独立显示单位,px均为整数,不会出现0.5px的情况。如: 看这个色彩鲜艳的LED灯(原图大小) 你能想象这才是他的本来面目吗?(放大之后) in 表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如我们经常说的手机屏幕大小有,5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是4英寸,表示手机的屏幕(可视区域)对角线长度是4 X 2.54 =

安卓屏幕适配框架的较量 dp & 限定符 & autolayout & autosize

巧了我就是萌 提交于 2019-12-18 20:46:03
安卓屏幕适配框架的较量 dp & 限定符 & autolayout & autosize 这里讲的是google自带的dp适配、比较久远的限定符适配、鸿神的autolayout、今日头条的autosize,下面大家就一起来看看他们的效果吧:(仅单一维度测试,数值也可能不标准,仅供参考,大家不要较真哦) 为了突出两个模拟器之间的差异明显,我们用的是1440*2560 和 480*800 分辨率的模拟器。下面所有图片,左边为1440*2560分辨率的模拟器,右边为480*800分辨率的模拟器。 首先上一个参考值,px的效果: 可见此图差异明显,两者都是100*100px的尺寸,也突出了px的特点:不同的设备不同的显示屏显示效果是相同的,这是绝对像素,是多少就永远是多少不会改变。 接下来测试dp的效果: dp的单位相对px来说就好一些,但是看起来还是能明显看出差别的,dp是google提出的适配方案,但是面对众多的机型,有时候也是不能满足我们的适配需求。 然后下面是传统的限定符适配方案,不多说,上效果: 这个很多兄弟们都用了好久,相当年我学安卓的时候就是用的这个,实际效果还是不错的,不过对比着下面这些新新框架,它可能稍微就臃肿麻烦一些了。 下面首先是我们鸿神的AutoLayout, 上效果: 我们看到效果还是不错的,他这个框架的使用实际上是将LinearLayout

Android适配不同的屏幕密度和DPI的方法

℡╲_俬逩灬. 提交于 2019-12-18 12:08:39
在Android开发中有时会遇到在不同的手机上界面不适配的问题,控件忽大忽小,而且就连两个分辨率相同的手机有时也会出现这种问题。其实出现界面适配问题的原因,并不仅仅有分辨率,还有一个更重要的因素是:屏幕密度与DPI。屏幕密度与DPI这个概念紧密相连,屏幕密度是对每个像素点的缩放比例,DPI全拼是dots-per-inch,即每英寸显示的像素点数。 有种方式可以解决上述问题,即:smallestWidth适配或sw限定符适配。这种方式是指:Android会识别屏幕可用高度和宽度的最小尺寸的dp值(其实就是手机的宽度值或电视的高度值),然后根据此值自动匹配资源文件中对应限定符目录下的资源文件。 但首先要计算出待适配设备的最小宽度dp值,方法如下: 1.首先在任意的Activity中添加如下测试代码,以便得出所需的参数:(得出参数后,可以删除此测试代码) DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels;//屏幕宽度(单位:px) int height = metric.heightPixels;//屏幕高度(单位:px) float density = metric

淘宝H5移动端解决方案

夙愿已清 提交于 2019-12-14 18:59:09
由于 viewport 单位得到众多浏览器的兼容, lib-flexible 这个过渡方案已经可以放弃使用,不管是现在的版本还是以前的版本,都存有一定的问题。建议大家开始使用 viewport 来替代此方案。 vw 的兼容方案可以参阅《 如何在Vue项目中使用vw实现移动端适配 》一文。 曾几何时为了兼容IE低版本浏览器而头痛,以为到Mobile时代可以跟这些麻烦说拜拜。可没想到到了移动时代,为了处理各终端的适配而乱了手脚。对于混迹各社区的偶,时常发现大家拿手机淘宝的H5页面做讨论—— 手淘的H5页面是如何实现多终端的适配 ? 那么趁此 Amfe阿里无线前端团队双11技术连载 之际,用一个实战案例来告诉大家,手淘的H5页面是如何实现多终端适配的,希望这篇文章对大家在Mobile的世界中能过得更轻松。 目标 拿一个双11的Mobile页面来做案例,比如你实现一个类似下图的一个H5页面: 目标很清晰,就是做一个这样的H5页面。 DEMO 请用手机扫下面的二维码 痛点 虽然H5的页面与PC的Web页面相比简单了不少,但让我们头痛的事情是要想尽办法让页面能适配众多不同的终端设备。看看下图你就会知道,这是多么痛苦的一件事情: 点击 这里 查看更多终端设备的参数。 再来看看手淘H5要适配的终端设备数据: 看到这些数据,是否死的心都有了,或者说为此捏了一把汗出来。 手淘团队适配协作模式

Html5 移动端适配

拜拜、爱过 提交于 2019-12-08 02:07:25
未来肯定是移动端的天下,接下来谈谈h5移动端的布局问题,目前有三种 1、百分比布局 —–>有点兼容性好,缺点布局的时候需要计算比较麻烦,不过可以采取工具或脚本实现。 2、flex布局 —–>目前看来兼容还是有一定问题,尤其是低版本andriod 3、rem布局 —–>目前比较推崇的布局方案,感兴趣的可以看看 淘宝的flexible 我的布局方案 一、定宽布局 我先解释一下原理,由于以前的机器是320**XXX的分辨率,所以我采取的320布局,图片当然要做2倍图或者3倍图,就是说320px是我们的布局基础。例如iphone5是640*1136px,但是我们用js获取的实际宽度是320*568,也就是说屏幕相当于一个点,由两个像素,如果这个点由显示的像素越多,屏幕就约清晰。 例如: 一个新的设计图是640*1136的iphone5,其实机子的实际宽度是320*568。我们可以按照320宽度进行布局,也就是说所有的图片我们需要用宽度或者背景宽度来控制。这样即可以采用ihpone 5可以采用,2倍图标,iphone6 3倍图标。 这样我们其实是把宽度写死了,也就是说在机子上的宽度显示的永远是320px的。这里我们就要想法进行缩放去适配各种不同机子,也就是rem方式。rem其实是相对于根节点的font-size大小进行缩放,也就是默认情况下1rem=16px。那么我们的320px=20rem