android适配

屏幕适配技术查阅资料汇总

橙三吉。 提交于 2019-12-03 00:01:39
Android 平板上开发应用的一点心得 —— 精确适配不同的 dpi 和屏幕尺寸 一、引言   Android的开源使厂商无需自行研发OS,大大降低了研发、生产的成本,使得Android平板品牌如雨后春笋般爆发,山寨机厂商们似乎又找到了一丝希望。与此同时带来的是广大开发者的苦不堪言,各种神奇的小板儿考验着app的兼容性,各种定制的rom不经意间就让app崩溃,光是界面上的调整就已经够你喝一壶了,是不? 二、适配可行性   早在Android设计之初就考虑到了这一点,为了让app适应标准or山寨屏幕,google已经有一套成熟的解决方案。其中,有这么几个指标需要注意:   (1)屏幕尺寸:单位inch,指的是屏幕对角线长度。   (2)屏幕密度:单位dpi,指的是每inch上可以显示多少像素点即px。   (3)屏幕分辨率:单位px * px,指的是一屏显示多少像素点。   (4)屏幕无关像素:单位dp/dip,指的是自适应屏幕密度的像素,用于指定控件宽高。   (5)刻度无关像素:单位sp,指的是自适应字体的像素,用于指定文字大小。   以我自己的Haier W910超级战舰(宽高比16:9)为例,上述单位的换算如下:   已知数据:屏幕尺寸4.5, 分辨率1280 * 720, 屏幕密度320   (1)16:9的4.5寸屏幕由勾股定理计算其高约为3.9寸,宽约为2.2寸   

flutter 适配Android ios全面屏

匿名 (未验证) 提交于 2019-12-02 23:52:01
起因:Android和ios最新发布的全面屏手机概览 之前大部分手机屏占比是16:9,但是以上占比达到了19.5:9,所以会让布局高度不足。弹框的位置和安全域也是将要面临的问题,故做以下适配; ios: 方法1:SafeArea()====》优点:方便;缺点:不灵活(不能自定义上下适配); import 'package:flutter/material.dart'; void main()=> runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return MaterialApp( title: "适配全面屏", home: Container( decoration: BoxDecoration( color: Colors.blue, ), child: SafeArea( child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[ Text( "上", style: TextStyle(color: Colors.red, fontSize: 30), ),

Android 9.0网络权限适配

匿名 (未验证) 提交于 2019-12-02 23:40:02
在做Android开发时,使用华为的p20和平板(均为Android 9.0)测试时,发现不能使用WIFI网络,一番郁闷纠结查找后 直接上方法: 在res文件夹下创建xml文件夹,在xml里面创建文件network_security_config.xml <?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" overridePins="true" /> <certificates src="user" overridePins="true" /> </trust-anchors> </base-config> </network-security-config>     android:networkSecurityConfig="@xml/network_security_config"完成参考于: https://blog.csdn.net/Liu_ser/article/details/86640849

android shape 部分圆角适配

谁说我不能喝 提交于 2019-12-02 23:01:50
通常会在shape画各种形状的图形,画圆角图时 android系统存在个bug,android2.x,左下角(bottomLeftRadius)、右下角(bottomRightRadius) 是反过来的。 解决方法:res下新建 drawable-v12 目录,存放v12及以上适用的xml,drawable下存放v12以下适用的xml. 举例:一个 左上、左下两个角圆角,右上、右下两个角直角 的图形: drawable-v12下的xml: drawable下的xml: 来源: CSDN 作者: tihi2 链接: https://blog.csdn.net/duantihi/article/details/50282375

移动端 UI 适配最佳实践(中)

こ雲淡風輕ζ 提交于 2019-12-02 21:41:42
上篇谈到了一些基础概念:屏幕密度、逻辑像素什么的,接下来继续探讨 常见设备尺寸 更全的数据请参考 Google 统计 说明:图中的 iPhone 6 Plus 数据看起来有些蹊跷,414 x 736 * 3 = 1242 x 2208,而物理像素却是 1080 x 1920 ,这是为何?实际上 iPhone 6 Plus 渲染出的图片尺寸为 1242 x 2208 px,但屏幕只有 1080 x 1920 px,所以系统会对渲染出的图进行压缩。 附:iOS对欢迎页的 尺寸说明 从表中数据可以看出: 虽然物理像素各种各样,但是逻辑像素还是相对统一的。 逻辑像素相接近的,屏幕尺寸也比较接近。 实际上,逻辑像素就是为了使 UI 在不同的屏幕上的表现一致。即:相同单位的逻辑像素,在不同的屏幕上的物理尺寸相同。来张图吧,一图胜前言。 UI 元素的高度为200逻辑像素,在倍率为1的屏幕上,高度为200 px,在倍率为2的屏幕上,高度为400px;但他们的物理尺寸都是一样的。 说了这么多,该切入正题了! 如何适配 前面做了很多铺垫,逻辑像素、倍率等等,是时候展现他们的用武之地咯 为不同倍率的屏幕提供对应的图片资源 iOS 平台的 @2X , @3X Android 平台的 drawable-mdpi , drawable-hdpi , drawable-xhdpi , drawable

Android屏幕适配开发工具——Google百分比布局支持库

余生长醉 提交于 2019-12-02 07:42:06
文/腾讯优测 吴宇焕 相信开发同学都被安卓设备碎片化的问题折磨过,市面上安卓手机的主流屏幕尺寸种类繁多,给适配造成很大的困难。就算搞定了屏幕尺寸问题,各种分辨率又让人眼花缭乱,当你走出了前面所说的两大坑,很有可能又掉进“屏幕长宽比不同”的陷阱。。。 说多了都是泪,我就想做一名安静的开发怎么这么难? 经历过无数次跌跌撞撞,我总结出一些经验,想与大家一起分享。 已知的屏幕适配方法: (1)按像素比:y/开发时用的屏幕像素=x/用户设备像素 (2)按长度:用dip(假设屏幕尺寸基本不变) (3)按密度:放在l、m、h文件夹(假设屏幕尺寸基本不变,dpi越大 PX越大) 而Android 5.0 Google官方推出了百分比布局支持库,意在解决大部分屏幕适配的问题。下面我就向大家详细介绍一下: Google百分比布局支持库 (1)支持的布局 (2)支持的属性 (3)使用方法 1、加载android-support-percent-lib dependencies { compile 'com.android.support:percent:22.2.0' } 2、PercentRelativeLayout 3、PercentFrameLayout 实现原理 (1)View绘制过程 整个View树的绘图流程是在ViewRootImpl类的performTraversals()方法中

Android版本适配(基于 6.0 ~ 9.0)

萝らか妹 提交于 2019-12-02 06:09:59
Android版本适配(基于 6.0 ~ 9.0) Android系统已经发展了10年之久,按照谷歌的命名风格,每个安卓版本都会以英文字母的顺序来进行命名,并且它们都有一个好吃的甜品代号,从最初的纸杯蛋糕(cupcake)到现在的奥利奥(pie)以及最新的beta版本的Android Q。但据说从Android Q开始Google将以数字的形式去命名接下来的版本,android甜品时代即将落幕。废话不多说,请看干货! Android6.0适配 动态权限(危险权限需要动态去申请) 我目前是导入一个依赖implementation ‘com.hjq:xxpermissions:5.2’,使用起来也就一行代码 Android 7.0适配 外部分享文件(应用间共享文件限制),使用相机拍照需要使用内容提供者fileprovider 取消了静态广播 ps:广播使用案例 1)监听网络状态 进入APP时没有网络页面请求不到数据肯定是白板,通过系统监听网络状态,过一会有网络之后,广播通知APP重新加载 2)跨进程通信 相册清除缓存之后,通过广播通知相册删除网络加载的缩略图 3)消息推送 Android 8.0适配 通知渠道 Android O版本对通知做了规范性的控制,所有的通知都需要提供通知渠道,强制用户在发送通知的时候,对通知进行系统性的管理,新增了channel渠道功能

移动端 UI 适配最佳实践(下)

前提是你 提交于 2019-12-01 15:48:57
前两篇更多的是理论部分,这篇主要是实践。 身为攻城狮的你,是否曾想过:如果设计师能按逻辑像素来标注,是多么美好!可现实是,你不得不拿着标注再除个 2 或 3 身为设计师的你,是否曾想过:攻城狮实现的 UI 能够和同设计稿一样,可现实是,你不得不忍受着,某些地方差几个像素或次像素 本篇可能不能解决所有问题,但希望能解决一部分问题 关于倍率的思考 前两篇谈到了逻辑像素和倍率,当 UI 元素的长度单位为逻辑像素时,系统在渲染时会根据倍率自动换算成物理像素。 正因为如此,攻城狮写布局文件时用逻辑像素为单位。攻城狮就想了:如果设计师给的标注是以逻辑像素为单位的,想必是极好的。设计师就想了,如果以逻辑像素标注是方便了你,可是对我有好处没? 答案是有的,大大的有!比如快速切出 2X,3X 的资源等等。那么问题来了,该怎么做? How to 本文以 photoshop 为例。 photoshop 里默认点/派 卡大小为 72 点 / 英寸,而新建文档时,设置分辨率为 72 像素 / 英寸(这也是默认值),那么在该文档上 1 英寸上有 72 个点、1 英寸上有 72 个像素,即 1 点 = 1 像素。如果改变分辨率会怎么样?我们试试。将分辨率设置为 216,此时文档上 1英寸还是 72 个点,但是 1英寸上有 216 个像素, 即 1 点 = 3 像素。回忆下,前面已经讨论到:当倍率为 1 时,1

android分辨率(屏幕适配)

浪尽此生 提交于 2019-11-30 16:26:30
关于手机分辨率相关术语和概念 屏幕尺寸:实际的物理尺寸,屏幕的对角线测量。为了方便,android把所有的屏幕尺寸分为了4个广义的大小:小,正常,大,特大。 屏幕密度:屏幕的物理面积内像素的数量,通常称为DPI(每英寸点数)。为了方便,android把所有的实际屏幕密度分为:低,中,高,特高。 方向:从用户的角度来看,就是屏幕的方向,就是横向或者纵向的意义。 分辨率:屏幕上面的物理像素总数。(官方说法,应用程序应该只关注屏幕大小和密度) 密度无关像素: 一个虚拟像素单元(官方说法,你应该使用密度无关像素定义UI的布局,来表达布局尺寸或位置,系统默认假设“中等”的密度屏幕为基准,其屏幕密度相当于一个160dpi的屏幕。在运行时,系统根据实际中的屏幕密度对DP单位进行缩放。DP单位转换为屏幕像素可用PX = DP *(DPI / 160)这个方法。那么在一个160dpi屏幕上,1DP==1PX。在一个240 dpi屏幕上,1 DP==1.5PX。那么在定义布局时,应该使用DP单位,以确保不同密度的屏幕上合理的显示用户界面) 关于支持屏幕的范围 官方定义4种广义尺寸:小,正常, 大,更大。四种密度:低,中型, 高,特高。广义尺寸和密度都可以跨越一系列的尺寸和密度(官方截图上传不了权限不够一周<img title=”[android 屏幕适配]关于android分辨率兼容问题(一)[转]”

关于Android的多种屏幕适配

荒凉一梦 提交于 2019-11-30 08:37:07
一、Android支持的多种屏幕 传统意义上,一般是是这么认为的: ldpi: 对应分辨率240×320 mdpi: 对应分辨率320×480 hdpi:对应分辨率480×800或480×854 但实际上没有这么简单,直接看官方资料的下标,可以看到其实ldpi一样由480×800,甚至还有1024×600 低密度(ldpi 120) 中密度(mdpi 160) 高密度(hdpi 240) 超高密度(320 xhdpi) 小屏幕 QVGA (240×320) 480×640 中屏幕 WQVGA400 (240×400) WQVGA432 (240×432) HVGA (320×480) WVGA800 (480×800) WVGA854 (480×854) 600×1024 640×960 大屏幕 WVGA800** (480×800) WVGA854** (480×854) WVGA800* (480×800) WVGA854* (480×854) 600×1024 超大屏幕 1024×600 WXGA (1280×800) 1024×768 1280×768 1536×1152 1920×1152 1920×1200 2048×1536 2560×1536 2560×1600 二、如何分辨是ldpi、mdpi、hdpi? 为什么要分辨率ldpi、mdpi、hdpi?我的理解