大家好,我是迟肯。
不聊虚的,只讲产品人能用的干货。
上次讲了接口和数据传输,很多朋友在后台问:
那用户看到的界面是怎么做出来的?安卓和iOS有什么区别?
那今天开始就来系统讲下客户端知识。
今天先从安卓系统开始。后续继续更IOS系统和web的。
01.
安卓开发核心技术
我们来看看安卓开发用到的技术栈:
1. 核心语言: Java和Kotlin
- Java:2008年被谷歌定为安卓官方语言,适合企业级应用和历史项目维护。
- Kotlin:2017年得到官方支持,2019年谷歌宣布成为应用开发首选语言。
2. 性能关键: C/C++
C/C++用于性能要求高的模块,比如:
3. 跨平台利器: Dart
Dart可以结合Flutter框架实现跨平台开发。
⬆️也就是说一套代码,同时运行在安卓和iOS上。
适合:
02.
安卓常用控件
那接下来就是本篇的重点:控件。
PM在画原型图时需要用到各种控件、对控件做出规定,因此需要好好了解下。
1. View: 所有控件的根
View就是"视图"的意思,是屏幕上能看到的可视化控件。
一切安卓控件在view的基础上设计而来。
定义一个View,需要说明: 宽度、高度、位置; 背景颜色、基本形状
2. Button: 按钮控件
Button是安卓系统默认的按钮控件。产品里所有能点击的部分,本质上都是按钮。
可以设置:
按钮的形状(圆角、方形);
外观(颜色、边框);
点击事件(点击后触发什么操作)
💡 dp和sp: 尺寸单位的学问
安卓设备屏幕尺寸、分辨率五花八门,怎么保证界面在不同手机上显示效果一致?
用dp 和 sp 这两个单位。
1️⃣dp (Device independent pixels)
也叫dip,与设备像素无关的单位。
比如一个控件高40dp,不管在什么分辨率的手机上,这个控件物理上看起来差不多高。
📦延伸:什么是像素密度?
dpi( Dots per inch):每英寸像素数量 注意区分dpi&dip!!
dpi计算方法:
回到正题,说说为什么要用dp做button的宽高单位
不同的设备有不同的像素密度,目前常见的有:
安卓的5种像素密度 | dp到px的系数 | 系数×dp长度=像素数 |
idpi :120dpi | 0.75 |
mdpi:160dpi | 1 |
hdpi :240dpi | 1.5 |
xhdpi:320dpi | 2 |
xxdpi:480dpi | 3 |
计算公式: 像素数 = dp系数 × dp长度
举例: 某个按钮高40dp
- 在240dpi(hdpi)手机上: 40 × 1.5 = 60像素
- 在320dpi(xhdpi)手机上: 40 × 2 = 80像素
所以这个按钮在不同手机上占有的像素数不一样,也就是一个模糊些一个清晰些,但物理尺寸是差不多大的,所以用dp作为控件长度工具,保证了控件在不同手机的显示具有稳定性。2️⃣sp (Scale-independent pixel)
跟dp类似,也用于确保显示稳定。但有2个关键区别——
dp | 只随屏幕密度缩放 | 用于宽高、间距、图标、空间大小等非文字尺寸 |
sp | 随屏幕密度+用户字体大小设置双重缩放 | 仅用于文字大小 |
安卓允许用户自定义字体大小,sp在不同字体设置下会有变化——
正常字体 1sp=1dp;
大字体/超大字体 1sp>1dp
3. TextView: 文本展示框
用于显示文本内容,比如文章正文、商品说明。
4. EditText: 文本输入框
跟TextView类似,但可以输入内容。
类型控制: 可以对输入内容做限制,比如: 只能输入数字。
hint(提示语): 输入框里的灰色提示文字,比如"请输入用户名"。一旦用户开始输入,这个提示语就消失了。
5. ImageView: 图片展示控件
用于显示图片,比如商品图、用户头像。
6. ListView: 列表控件
是一种容器控件,里面可以放其他控件。
ListView的每一行叫一个"条目"。
比如微信的会话列表,就是一个ListView,每个会话是一个条目。
7. GridView: 表格控件
也是容器控件,把内容按网格排列。
GridView的每一格叫一个"条目"。
常用在多服务入口的产品,比如支付宝APP的功能菜单。
05.
总结
客户端开发的核心概念:
- 安卓开发主流用Java/Kotlin,C/C++用于性能优化,Dart用于跨平台
- View是所有控件的根,Button、TextView、EditText、ImageView、ListView、GridView是常用控件
- dp和sp是适配不同屏幕的关键单位,dp用于非文字尺寸,sp用于文字大小