精华内容
下载资源
问答
  • Android UI设计》PDF

    2018-08-21 10:24:36
    Android UI设计》面向创建移动应用的产品经理、设计师和开发者,系统讲解了从事Android UI设计必须要掌握的Android平台的主要技术和特性,全面总结了Android UI的设计原理、设计理念和设计模式,并通过一个综合的...
  • Android UI设计

    2021-03-06 17:09:32
    1、在Android应用中, UI (User Interface)界面是人与手机之间数据传递、交互信息的重要媒介和对话接中。 2、Android程序开发最重要的一个环节就是界面处理,界面的美观度直接影响用户的第一印象,因此,开发一个整齐...

    UI概述
    1、在Android应用中, UI (User Interface)界面是人与手机之间数据传递、交互信息的重要媒介和对话接中。
    2、Android程序开发最重要的一个环节就是界面处理,界面的美观度直接影响用户的第一印象,因此,开发一个整齐、美观的界面是至关重要的。
    3、 Android应用的界面是由View和ViewGroup对象构建而成的。
    View类是Android系统平台上用户界面表示的基本单元, View的一些子类被统称为Widgets(工具),它们提供了诸如文本输入框和按钮之类的UI对象的完整实现。
    ViewGroup是View的一个扩展,它可以容纳多个View,通过ViewGroup类可以创建有联系的子View组成的复合控件。

    UI事件
    1、理解UI事件
    ①当用户通过手指触摸U时,系统会自动创建对应的Event对象
    ②Android中提供了多种方式拦截处理不同类型的事件
    ③视图本身就可以处理发生在该视图上的事件

    布局的类型
    1、Android中的布局如下:
    LinearLayout:线性布局
    RelativeLayout:相对布局
    TableLayout:表格布局
    GridLayout:网格布局
    FrameLayout:框架布局、模板布局
    AbsoluteLayout:绝对布局

    展开全文
  • Android UI 设计规范

    千次阅读 2020-01-10 12:00:10
    1. 基础常识 1.1 主流屏幕尺寸 ... 现在,多数标注工具都支持 dp 标注功能,比如 MarkMan,如果UI设计者是按照1280*720的尺寸设计的效果图,在标注时选择xhdpi即可: 使用 MarkMan 进行 dp 标注 DP/PX在线转换工具:...

    1. 基础常识

    1.1 主流屏幕尺寸

    标识屏幕尺寸
    hdpi480 * 800
    xhdpi720 * 1280
    xxhdpi1080 * 1920

    1.2 图标尺寸

    标识启动图标尺寸菜单图标尺寸
    mdpi48 * 48 (160 DPI )24 * 24
    hdpi72 * 72(240 DPI)36 * 36
    xhdpi96 * 96 (320 DPI)48 * 48
    xxhdpi144 * 144(480 DPI )72 * 72
    xxxhdpi192 * 192 (640 DPI)96 * 96

    1.3 颜色值

    Android 定义颜色color时有6位或8位值的区别,6位(如:#0470C4)就是RGB,值8位(如:#1E000000)头两位是透明度,后6位是RGB值,00是完全透明,FF是完全不透明,比较适中的透明度值是 1E。

    不透明度16进制值

    格式如#00FFFFFF,前两位代表不透明度的十六进制。00表示完全透明,FF就是全不透明。依次递增。

    不透明度16进制值
    100%FF
    95%F2
    90%E6
    85%D9
    80%CC
    75%BF
    70%B3
    65%A6
    60%99
    55%8C
    50%80
    45%73
    40%66
    35%59
    30%4D
    25%40
    20%33
    15%26
    10%1A
    5%0D
    0%00

    1.4 标注

    • Android 设计规范中间距单位是 dp,dp 在 Android 机上不同的密度转换后的 px 是不一样的,所以按照设计图的 px 转换成 dp 也是不一样的。
      现在,多数标注工具都支持 dp 标注功能,比如 MarkMan,如果UI设计者是按照1280*720的尺寸设计的效果图,在标注时选择xhdpi即可:

    使用 MarkMan 进行 dp 标注

    DP/PX在线转换工具:http://pixplicity.com/dp-px-converter/

    • 字体大小单位是 sp

    1.5 切图

    注意:切图素材文件大小尽量保持 <= 200Kb,主要为png格式。

    2. Material Design相关

    Material Design,中文名:质感设计,是由 Google 推出的全新的设计语言,谷歌表示,这种设计语言旨在为手机、平板电脑、台式机和“其他平台”提供更一致、更广泛的“外观和感觉”。

    想要深入了解 Material Design,还是建议有空通读一遍官方文档。不过,牢记以下要点,基本能做到90%了。实际上,Google 官方的应用也有不遵照规范的地方,不能太拘泥于条条框框。

    Material Design 中文版文档

    2.1 核心思想

    Material Design 的核心思想,就是把物理世界的体验带进屏幕。去掉现实中的杂质和随机性,保留其最原始纯净的形态、空间关系、变化与过渡,配合虚拟世界的灵活特性,还原最贴近真实的体验,达到简洁与直观的效果。

    Material Design 是最重视跨平台体验的一套设计语言。由于规范严格细致,保证它在各个平台使用体验高度一致。

    2.2 材质与空间

    • 材质

    Material Design 中,最重要的信息载体就是魔法纸片。纸片层叠、合并、分离,拥有现实中的厚度、惯性和反馈,同时拥有液体的一些特性,能够自由伸展变形。

    这些是纸片的魔法特性,真实纸片所不具备的能力:

    • 纸片可以伸缩、改变形状
    • 纸片变形时可以裁剪内容,比如纸片缩小时,内容大小不变,而是隐藏超出部分
    • 多张纸片可以拼接成一张
    • 一张纸片可以分裂成多张
    • 纸片可以在任何位置凭空出现

    不过,魔法纸片有些效果是禁止的:

    • 一项操作不能同时触发两张纸片的反馈

    • 层叠的纸片,海报高度不能相同

    • 纸片不能互相穿透

    • 纸片不能弯折

    • 纸片不能产生透视,必须平行于屏幕

    • 空间

    Material Design引入了z轴的概念,z轴垂直于屏幕,用来表现元素的层叠关系。z值(海拔高度)越高,元素离界面底层(水平面)越远,投影越重。这里有一个前提,所有的元素的厚度都是1dp。

    所有元素都有默认的海拔高度,对它进行操作会抬升它的海拔高度,操作结束后,它应该落回默认海拔高度。同一种元素,同样的操作,抬升的高度是一致的。

    注意:这不止是设计中的概念,开发人员确实可以通过一个值来控制元素的海拔高度和投影。

    2.3 动画

    Material Design 重视动画效果,它反复强调一点:动画不只是装饰,它有含义,能表达元素、界面之间的关系,具备功能上的作用。

    • ** easing **

    动画要贴近真实世界,就要重视 easing。物理世界中的运动和变化都是有加速和减速过程的,忽然开始、忽然停止的匀速动画显得机械而不真实。考虑动画的easing,要先考虑它在现实世界中的运动规律。

    • ** 水波反馈 **

    所有可点击的元素,都应该有这样的反馈效果。通过这个动画,将点击的位置与所操作的元素关联起来,体现了 Material Design 动画的功能性。

    • ** 转场效果 **

    通过过渡动画,表达界面之间的空间与层级关系,并且跨界面传递信息。

    从父界面进入子界面,需要抬升子元素的海拔高度,并展开至整个屏幕,反之亦然。

    多个相似元素,动画的设计要有先后次序,起到引导视线的作用。

    相似元素的运动,要符合统一的规律。

    • ** 细节动画 **

    通过图标的变化和一些细节来达到令人愉悦的效果

    2.4 颜色

    颜色不宜过多。选取一种主色、一种辅助色(非必需),在此基础上进行明度、饱和度变化,构成配色方案。

    Appbar 背景使用主色,状态栏背景使用深一级的主色或20%透明度的纯黑

    小面积需要高亮显示的地方使用辅助色。
    其余颜色通过纯黑#000000与纯白#ffffff的透明度变化来展现(包括图标和分隔线),而且透明度限定了几个值。

    黑色:[87% 普通文字] [54% 减淡文字] [26% 禁用状态/提示文字] [12% 分隔线]
    白色:[100% 普通文字] [70% 减淡文字] [30% 禁用状态/提示文字] [12% 分隔线]

    2.5 图标

    • ** 桌面图标 **

    桌面图标建议模仿现实中的折纸效果,通过扁平色彩表现空间和光影。注意避免以下问题:

    • 不要给彩色元素加投影

    • 层叠不要超过两层

    • 折角不要放在左上角

    • 带投影的元素要完整展现,不能被图标边缘裁剪

    • 如果有折痕,放在图片中央,并且最多只有一条

    • 带折叠效果的图标,表面不要有图案

    • 不能透视、弯曲

    • ** 小图标 **

    优先使用material design默认图标。设计小图标时,使用最简练的图形来表达,图形不要带空间感。

    活动区域

    修饰区域

    小图标尺寸是24dp X 24dp。图形限制在中央20dp X 20dp区域内。

    小图标同样有栅格系统。线条、空隙尽量保持2dp宽,圆角半径2dp。特殊情况相应调整。

    小图标的颜色使用纯黑与纯白,通过透明度调整:
    黑色:[54% 正常状态] [26% 禁用状态]
    白色:[100% 正常状态] [30% 禁用状态]

    2.6 图片

    • ** 选用图片 **

    描述具体事物,优先使用照片。然后可以考虑使用插画。

    • ** 图片上的文字 **

    图片上的文字,需要淡淡的遮罩确保其可读性。深色的遮罩透明度在20%-40%之间,浅色的遮罩透明度在40%-60%之间。

    对于带有文字的大幅图片,遮罩文字区域,不要遮住整张图片。

    • ** 提取颜色 **

    Android L可以从图片中提取主色,运用在其他UI元素上。

    • ** 图片加载过程 **

    图片的加载过程非常讲究,透明度、曝光度、饱和度3个指标依次变化,效果相当细腻。

    2.7 文字

    • 字体

    英文字体使用Roboto,中文字体使用Noto。

    Roboto有6种字重:Thin, Light, Regular, Medium, Bold 和 Black。

    Noto有7种字重:Thin, Light, DemiLight, Regular, Medium, Bold 和 Black。

    • 文字排版

    常用字号:

    • 12sp 小字提示
    • 14sp(桌面端13sp) 正文/按钮文字
    • 16sp(桌面端15sp) 小标题
    • 20sp Appbar文字
    • 24sp 大标题
    • 34sp/45sp/56sp/112sp 超大号文字

    长篇幅正文,每行建议60字符(英文)左右。短文本,建议每行30字符(英文)左右。

    2.8 布局

    所有可操作元素最小点击区域尺寸:48dp X 48dp。

    栅格系统的最小单位是8dp,一切距离、尺寸都应该是8dp的整数倍。以下是一些常见的尺寸与距离:

    • 顶部状态栏高度:24dp
    • Appbar最小高度:56dp
    • 底部导航栏高度:48dp
    • 悬浮按钮尺寸:56x56dp/40x40dp
    • 用户头像尺寸:64x64dp/40x40dp
    • 小图标点击区域:48x48dp
    • 侧边抽屉到屏幕右边的距离:56dp
    • 卡片间距:8dp
    • 分隔线上下留白:8dp
    • 大多元素的留白距离:16dp
    • 屏幕左右对齐基线:16dp
    • 文字左侧对齐基线:72dp

    另外注意56dp这个数字,许多尺寸可变的控件,比如对话框、菜单等,宽度都可以按56的整数倍来设计。

    还有非常多规范,不详细列举,遵循8dp栅格很容易找到适合的尺寸与距离。平板与PC上留白更多,距离与尺寸要相应增大。

    2.9 组件(Components)

    显示效果

    标准示例

    底部动作条是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能。底部动作条呈现了简单、清晰、无需额外解释的一组操作。

    通常以列表形式出现,支持上下滚动。

    也可以是网格式的。

    按钮由文字和/或图标组成,文字及图标必须能让人轻易地和点击后展示的内容联系起来。

    主要的按钮有三种:

    • 悬浮响应按钮(Floating action button), 点击后会产生墨水扩散效果的圆形按钮。
    • 浮动按钮(Raised button), 常见的方形纸片按钮,点击后会产生墨水扩散效果。
    • 扁平按钮(Flat button), 点击后产生墨水扩散效果,和浮动按钮的区别是没有浮起的效果。

    悬浮响应按钮

    浮动按钮

    扁平按钮

    最重要且随处用到的操作,建议使用悬浮按钮。信息较多时,选用凸起按钮可以有效突出重要操作,但注意纸片不要叠太多层。扁平按钮适合用在简单的界面,例如对话框中。

    使用悬浮按钮要遵循以下规则:

    • 建议只用一个悬浮按钮
    • 悬浮按钮可以贴在纸片边缘或者接缝处,但不要贴在对话框、侧边抽屉和菜单的边缘
    • 悬浮按钮不能被其他元素盖住,也不能挡住其他按钮
    • 列表滚动至底部时,悬浮按钮应该隐藏,防止它挡住列表项
    • 悬浮按钮的位置不能随意摆放,可以贴着左右两边的对齐基线

    悬浮按钮有两种尺寸:56x56dp/40x40dp

    卡片是包含一组特定数据集的纸片,数据集含有各种相关信息,例如,关于单一主题的照片,文本,和链接。卡片通常是通往更详细复杂信息的入口。卡片有固定的宽度和可变的高度。最大高度限制于可适应平台上单一视图的内容,但如果需要它可以临时扩展(例如,显示评论栏)。卡片不会翻转以展示其背后的信息。

    **卡片集**是**卡片**的一个平面布局

    即使在同一个列表中,卡片的内容和布局方式也可以不一样。

    卡片统一带有2dp的圆角。

    在以下情况考虑使用卡片:

    • 同时展现多种不同内容
    • 卡片内容之间不需要进行比较
    • 包含了长度不确定的内容,比如评论
    • 包含丰富的内容与操作项,比如赞、滚动条、评论
    • 本该是列表,但文字超过3行
    • 本该是网格,但需要展现更多文字

    卡片最多有两块操作区域。辅助操作区至多包含两个操作项,更多操作需要使用下拉菜单。其余部分都是主操作区。

    ** 卡片布局准则 **

    字体设计
    正文:14 sp 或 16 sp
    标题:24 sp 或更大
    扁平按钮:Roboto Medium, 14 sp, 10 sp 字间距

    移动设备上的卡片间距
    屏幕边界与卡片间留白:8 dp
    卡片间留白:8 dp

    内容留白
    16 dp

    纸片是一种小块的用来呈现复杂实体的块,比如说日历的事件或联系人。它可以包含一张图片,一个短字符串(必要时可能被截取的字符串),或者是其它的一些与实体对象有关的简洁的信息。Chips 可以非常方便的通过托拽来操作。通过按压动作可以触发悬浮卡片(或者是全屏视图)中的 Chip 对应实体的视图,或者是弹出与 Chip 实体相关的操作菜单。

    狭小空间内表现复杂信息的一个组件,比如日期、联系人选择器。

    Dialogs 用于提示用户作一些决定,或者是完成某个任务时需要的一些其它额外的信息。 Dialog 可以是用一种 取消/确定 的简单应答模式,也可以是自定义布局的复杂模式,比如说一些文本设置或者是文本输入 。

    一些复杂的操作,尤其是每个决策都需要相关解释说明的情况下是不适合使用 Dialog 形式的。

    Dialog 包含了一个标题(可选),内容 ,事件。
    标题:主要是用于简单描述下选择类型。它是可选的,要需要的时候赋值即可。
    内容:主要是描述要作出一个什么样的决定 。
    事件:主要是允许用户通过确认一个具体操作来继续下一步活动。

    Dividers 主要用于管理和分隔列表和页面布局内的内容,以便让内容生成更好的视觉效果及空间感。示例中呈现的分隔线是一种弱规则,弱到不会去打扰到用户对内容的关注。

    列表中有头像、图片等元素时,使用内嵌分隔线,左端与文字对齐。

    没有头像、图标等元素时,需要用通栏分隔线

    图片本身就起到划定区域的作用,相册列表不需要分隔线

    谨慎使用分隔线,留白和小标题也能起到分隔作用。能用留白的地方,优先使用留白。分隔线的层级高于留白。

    通栏分隔线的层级高于内嵌分隔线

    网格列表是一种标准列表视图的可选组件。网格列表与应用于布局和其他可视视图中的网格有着明显的区别。

    网格由单元格构成,单元格中的瓦片用来承载内容

    瓦片可以横跨多个单元格

    瓦片内容包括主要内容(primary content)和次要内容(secondary content)。主要内容是有着重要区别的内容,典型的如图片。次要内容可以是一个动作按钮或者文本。

    为瓦片内容提供一个默认图片。
    网格只能垂直滚动。单个瓦片不支持滑动手势,也不鼓励使用拖放操作。
    网格中的单元格间距是2dp或8dp。

    列表作为一个单一的连续元素来以垂直排列的方式显示多行条目。

    列表由单一连续的列构成,该列又等分成相同宽度称为行(rows)的子部分。行是瓦片(tiles)的容器。瓦片中存放内容,并且在列表中可以改变高度。

    如果列表项内容文字超过3行,请改用卡片。如果列表项的主要区别在于图片,请改用网格。

    列表包含主操作区与副操作区。副操作区位于列表右侧,其余都是主操作区。在同一个列表中,主、副操作区的内容与位置要保持一致。

    在同一个列表中,滑动手势操作保持一致。

    主操作区与副操作区的图标或图形元素是列表控制项,列表的控制项可以是勾选框、开关、拖动排序、展开/收起等操作,也可以包含快捷键提示、二级菜单等提示信息。

    顺序固定的菜单,操作频繁的选项放在上面。
    顺序可变的菜单,可以把之前用过的选项排在前面,动态排序。
    菜单尽量不要超过2级。

    当前不可用的选项要显示出来,让用户知道在特定条件可以触发这些操作。

    菜单原地展开,盖住当前选项,当前选项应该成为菜单的第一项。

    菜单的当前选项,始终与当前选项水平对齐。

    靠近屏幕边缘时,位置可适当错开。

    菜单过长时,需要显示滚动条。

    菜单从当前选项固定位置展开,不要跟随点击位置改变。

    菜单到上下留出8dp距离。

    选择器提供了一个简单的方法来从一个预定义集合中选取单个值。

    日期选择器

    时间选择器

    线形进度条只出现在纸片的边缘

    环形进度条也分时间已知和时间未知两种

    环形进度条可以用在悬浮按钮上

    加载详细信息时,也可以使用进度条

    下拉刷新的动画比较特殊,列表不动,出现一张带有环形进度条的纸片。

    滑块左右两边可以放置图标

    或是可编辑文本框

    非连续的滑块,需要标出具体数值

    Snackbars至多包含一个操作项,不能包含图标。不能出现一个以上的Snackbars。

    Snackbars在移动设备上,出现在底部。在PC上,应该悬浮在屏幕左下角。

    不一定要用户响应的提示,可以使用Snackbars。非常重要的提示,必须用户来决定的,应该用对话框。

    Snackbars不能遮挡住悬浮按钮,悬浮按钮要上移让出位置。

    Snackbars的留白比较大,24dp。

    toasts和Snackbars类似,样式和位置可以自定义,建议遵循Snackbars的规则设计。

    小标题是列表或网格中的特殊瓦片,描述列表内容的分类、排序等信息。

    滚动时,如果列表较长,小标题会固定在顶部,直到下一个小标题将它顶上去。

    存在浮动按钮时,小标题要让出位置,与文字对齐。

    开关允许用户选择选择项。一共有三种类型的开关:复选框、单选按钮和 on/off 开关。

    单选按钮(Radio button)

    复选框(Checkbox)

    开关(Switch)

    在一个 app 中,tabs 使在不同的视图和功能间探索和切换以及浏览不同类别的数据集合起来变得简单。

    扩展的 app bar + tab bar

    加入检索 + app bar + tab bar

    默认的 app bar + tab bar

    默认的 app bar + 可滚动的 tab bar

    和 tab 指示器一样的字体颜色

    被锁定滚动的 tab bar

    tab只用来展现不同类型的内容,不能当导航菜单使用。tab至少2项,至多6项。

    tab文字要显示完整,字号保持一致,不能折行,文字与图标不能混用。

    文本框可以让用户输入文本。它们可以是单行的,带或不带滚动条,也可以是多行的,并且带有一个图标。点击文本框后显示光标,并自动显示键盘。除了输入,文本框可以进行其他任务操作,如文本选择(剪切,复制,粘贴)以及数据的自动查找功能。

    简单一根横线就能代表输入框,可以带图标

    激活状态和错误状态,横线的宽度变为2dp,颜色改变

    输入框点击区域高度至少48dp,但横线并不在点击区域的底部,还有8dp距离。

    输入框提示文字,可以在输入内容后,缩小停留在输入框左上角

    整个点击区域增高,提示文字也是点击区域的一部分

    通栏输入框是没有横线的,这种情况下通常有分隔线将输入框隔开

    右下角可以加入字数统计。字数统计不要默认显示,字数接近上限时再显示出来。

    通栏输入框也可以有字数统计,单行的字数统计显示在同一行右侧

    错误提示显示在输入框的左下方。默认提示文本可以转换为错误提示。

    字数限制与错误提示都会使点击区域增高。

    同时有多个输入框错误时,顶部要有一个全局的错误提示

    输入框尽量带有自动补全功能。

    提示只用在小图标上,文字不需要提示。鼠标悬停、获得焦点、手指长按都可以触发提示。

    触摸提示(左)和鼠标提示(右)的尺寸是不同的,背景都带有90%的透明度。

    2.10 模式(patterns)

    Tabs

    Bottom navigation bar 1

    Bottom navigation bar 2

    Navigation drawer

    侧边抽屉从左侧滑出,占据整个屏幕高度,遵循普通列表的布局规则。手机端的侧边抽屉距离屏幕右侧56dp。

    侧边抽屉支持滚动。如果内容过长,设置和帮助反馈可以固定在底部。抽屉收起时,会保留之前的滚动位置。

    列表较短不需要滚动时,设置和帮助反馈跟随在列表后面。

    设置和帮助反馈通常放在侧边抽屉中。如果没有侧边抽屉,则放在Appbar的下拉菜单底部。

    设置界面只能包含设置项,诸如关于、反馈之类的界面,入口应该放在其他地方。

    设置项使用通栏分隔线来分组。7项以下不必分组。如果某项独立一组,考虑把它放在顶部(重要)或放在底部的“其他”一栏中(不重要)。设置项较多时尝试合并,比如把两个相关的勾选项合并成一个多选项。设置项非常多时,使用子界面。

    2.11 资源

    2.12 实践

    知乎安卓客户端Material Design实战规范:http://www.tuyiyi.com/v/40056.html


    欢迎各位小伙伴加入我的qq群:开发一群:454430053 开发二群:537532956   这里已经有很多小伙伴在等你了,快来加入我们吧!

    展开全文
  • 精彩绝伦的Android UI设计
  • Android UI设计心得

    2015-11-14 11:18:51
    Android UI设计心得。包括线性布局(LinearLayout)、相对布局(RelativeLayout)、表格布局(TableLayout)、框架布局(FrameLayout)、绝对布局(AbsoluteLayout)。其中AbsoluteLayout在Android SDK2.3.3之后已经...
  • 《精通Android UI设计

    2017-11-23 10:00:29
    本书详细阐述了与 Android UI开发相关的基本解决方案,主要包括 Android UI设计工具, Android UI布局, Android UI Widgets,Android UI选项菜单, Android UI本地菜单, Android UI操作栏, Android UI设计考虑, ...
  • 精彩绝伦的Android UI设计 响应式用户界面与设计模式_中文版
  • 精通ANDROID UI设计

    2019-02-20 14:14:49
    精通ANDROID UI设计
  • 安卓UI设计

    2019-03-18 19:41:58
    安卓UI设计 中文电子版图书 PDF文件 电子版 谢谢下载
  • 谷歌的 Android 操作系统正在持续赢得市场,已经成为全球应用*广的操作系统 之一。现在,从智能手表到智能电视、智能手机、智能眼镜...具有流畅、简洁以及精美UI设计的应用,将在Android应用市场赢得用户并提高销售量。
  • UI(User Interface)是用户不 App 交互的界面,是 App 最直观的体现。UI 设计主要涉及到两方面的内容,一个是页面布局设计,一个是控件属性设计
  • 资源名称:精彩绝伦的Android UI设计:响应式用户界面与设计模式资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • 主要介绍了Android UI设计系列之自定义EditText实现带清除功能的输入框,具有一定的实用性和参考价值,感兴趣的小伙伴们可以参考一下
  • 浅谈安卓UI设计

    千次阅读 2018-06-17 00:39:19
    在界面设计的过程中,需要考虑如何制作出UI界面,怎么样控制UI界面两大块。 这里先放上之前我们UI作业的截图: ![1]...

    用户界面在程序开发中十分重要,一个好的用户界面设计需要考虑到用户使用体验、是否美观方便等。
    在界面设计的过程中,需要考虑如何制作出UI界面,怎么样控制UI界面两大块。
    这里先放上之前我们UI作业的截图:
    1
    2
    3
    4
    5
    6
    本文主要介绍通过两种方式来进行界面设计:
    1、通过xml文件进行界面设计
    2、通过代码控制进行界面设计

    一、通过xml文件进行界面设计
    打开Android Studio,建立工程,在res/layout下存放的是界面布局文件。双击创建的文件,左边是界面设计,右边对应了界面设计的xml文本。
    1>在左边控件中,拖动一个button到右边的手机界面中,之后点击上线画圈右边的text查看文本,可以看到xml已经编写完成。
    2>切换到代码目录,打开之前创建的MainActivity,在onCreate()方法中:

    setContentView(R.layout.activity_main);  //将编写的界面显示到手机屏幕

    MainActivity添加两个私有数据成员:

    private TextView tv;
    private Button bt;

    onCreate()里面初始化tv和bt,并给bt添加监听事件

    tv = (TextView)findViewById(R.id.textView);//控件初始化
    bt = (Button) findViewById(R.id.button);//控件初始化
    
    bt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    tv.setText("你点击了按钮!");
    }
    );//添加监听

    运行程序,点击按钮,原来的hello world!文本发生改变。在这里,两个控件都是通过xml文件定义的,我们在代码中实现了一个监听器,也就是界面的控制逻辑。
    实例:
    通过代码进行界面设计时,我们建立一个TextView控件来写标题;建立一个ImageView控件来写标题。先将图片复制到res/drawable目录下,然后通过app:srcCompat=”@drawable/sysu”来引用;建立两个TextView控件,用来写“学号”和“密码”,设置建立两个EditView控件,用来输入学号和密码;建立一个RadioGroup,之后再在里面建立两个单选按钮RadioButton。
    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.yc.sysu.MainActivity">
    
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="学生信息系统"
            android:textSize="20sp"
            android:textColor="#000000"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginTop="20dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"/>
    
        <ImageView
            android:id="@+id/icon"
            android:layout_width="104dp"
            android:layout_height="104dp"
            app:srcCompat="@drawable/sysu"
            app:layout_constraintTop_toBottomOf="@id/title"
            android:layout_marginTop="20dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent" />
    
        <TextView
            android:id="@+id/user_id"
            android:text="学号:"
            android:textColor="#000000"
            android:textSize="18sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            android:layout_marginLeft="20dp"
            app:layout_constraintTop_toBottomOf="@id/icon"
            android:layout_marginTop="20dp" />
    
        <TextView
            android:id="@+id/user_pwd"
            android:text="密码:"
            android:textColor="#000000"
            android:textSize="18sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            android:layout_marginLeft="20dp"
            app:layout_constraintTop_toBottomOf="@id/user_id"
            android:layout_marginTop="20dp"/>
    
        <EditText
            android:id="@+id/text_userid"
            android:hint="请输入学号"
            android:textColor="#000000"
            android:textSize="18sp"
            android:paddingTop="0dp"
            android:digits="0123456789"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="@id/user_id"
            app:layout_constraintLeft_toRightOf="@+id/user_id"
            app:layout_constraintRight_toRightOf="parent"
            android:layout_marginRight="20dp"/>
    
        <EditText
            android:id="@+id/text_userpwd"
            android:hint="请输入密码"
            android:textColor="#000000"
            android:textSize="18sp"
            android:password="true"
            android:paddingTop="0dp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="@id/user_pwd"
            app:layout_constraintLeft_toRightOf="@+id/user_pwd"
            app:layout_constraintRight_toRightOf="parent"
            android:layout_marginRight="20dp" />
    
        <RadioGroup
            android:id="@+id/radioButton"
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/user_pwd"
            android:layout_marginTop="30dp">
    
        <RadioButton
            android:id="@+id/radioButton1"
            android:text="学生"
            android:textColor="#000000"
            android:textSize="18sp"
            android:checked="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
        <RadioButton
            android:id="@+id/radioButton2"
            android:text="教职工"
            android:textColor="#000000"
            android:textSize="18sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"/>
        </RadioGroup>
    
        <View
            android:id="@+id/button_box"
            android:layout_height="50dp"
            android:layout_width="185dp"
            app:layout_constraintTop_toBottomOf="@id/radioButton"
            android:layout_marginTop="20dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"/>
    
        <Button
            android:id="@+id/button1"
            android:text="登录"
            android:textColor="#ffffff"
            android:background="@drawable/shape"
            android:textSize="18sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="@id/button_box"
            app:layout_constraintTop_toTopOf="@id/button_box" />
    
        <Button
            android:id="@+id/button2"
            android:text="注册"
            android:textColor="#ffffff"
            android:background="@drawable/shape"
            android:textSize="18sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toRightOf="@id/button1"
            android:layout_marginLeft="10dp"
            app:layout_constraintTop_toTopOf="@id/button_box"/>
    
    
    </android.support.constraint.ConstraintLayout>
    

    shape.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#3f51b5"/>
        <corners android:radius="10dip"/>
        <padding
            android:bottom="5dp"
            android:top="5dp"
            android:left="10dp"
            android:right="10dp"/>
    </shape>

    二、通过代码进行界面设计
    定义MainActivity的私有成员:

        private TextView tv;
        private Button bt;

    重写onCreate(),通过new定义一个线性布局和Button按钮和文本框控件,布局里面加入控件,控件加上监听事件

    LinearLayout l = new LinearLayout(this);  //定义线性布局
            setContentView(l);                //线性布局加入屏幕
    
            tv = new TextView(this);          //定义控件
            bt = new Button(this);            //定义控件
    
            l.addView(bt);                   //加入布局
            l.addView(tv);                  //加入布局
    
            bt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    tv.setText("你点击了按钮!");
                }
            });         //监听事件

    运行代码,点击按钮,将会出现”你点击了按钮!”的文本提示。

    三、总结
    在界面设计前,需要先调查用户需求,再进一步展开设计。安卓界面设计通过xml文件进行界面设计,这是一种十分高效的方式。通过代码进行界面设计则是一种更为灵活的开发方式。在实际操作中,两者结合能够大大简化界面设计工作。

    作者:陈语童
    原文链接:https://blog.csdn.net/weixin_41402015/article/details/80716263

    展开全文
  • 《精通AndroidUI设计

    2018-04-19 16:30:36
    《精通AndroidUI设计》,这本书不错,值得一看。。。。。。
  • Android UI设计标准参考

    千次阅读 2018-09-26 18:57:21
    Android UI设计标准参考一,尺寸标准1.1 安卓基本尺寸参考1.2 安卓logo二,屏幕适配2.1适配思想2.2 适配策略三,图标设计思考方式参考3.1设计页面3.2设计各元素四,动画设计五,图片格式颜色5.1 png格式5.2 颜色 ...

    大家好,随着安卓UI发展,最近工作中遇到各种屏幕适配切图尺寸 等各种问题,现写此文章写明各标准,说明各问题,以帮助UI设计同事一次性设计和切图成功,避免再次返工,增加不必要的工作量。

    一,尺寸标准

    随着安卓手机的流行,屏幕越来越大,各种尺寸手机都出现了,可怎么样设计UI怎么样切图更能符合安卓App的需求,我在此详细记录下来

    1.1 安卓基本尺寸参考

    安卓工程对屏幕尺寸做了一下分割,即对屏幕的小,正常,大,特大屏幕的标准做了个尺寸上的界定。

    1. Google目前为安卓开发设计了六种尺寸(详细介绍请点击官方链接
    密度屏幕尺寸切图目录评论
    ldpi(低)240×320L不需切图
    mdpi(中)320×480M不需切图
    hdpi(高)480×800X可切图,兼容小屏手机
    xhdpi(超高)1280x7202X需切图,作为标准
    xxhdpi(超超高)1920x10803X需切图,常规手机
    xxxhdpi(超超超高)3840×21604X大屏手机,未来趋势

    1.2 安卓logo

    安卓logo即安卓App安装后显示在桌面的入口图标,安卓开发中叫 ic_launcher

    1. 标准最大尺寸,512*512PX,圆角半径弧度:70PX,图片格式:PNG;以此最大图进行缩放,app工程和上传市场使用。
    2. 屏幕密度 图标切图尺寸参考
      mdpi 48x48px
      hdpi 72x72px
      xhdpi 96x96px
      xxhdpi 144x144px
      xxxhdpi 192x192px
    3. 随着安卓设备的发展,app logo形状需求变得多样化,不仅仅有椭圆形,还有正方形和圆形等,Google为了支持这种多样性,设计了一套标准,把logo的图案与底色(可单色可纹理)分离,图案与形状分离。形成了一套可以支持多种图形的标准,详细介绍请点击链接

    二,屏幕适配

    因为安卓的理念是一个app包,可以在多种大小屏幕设备上正常运行和使用,所以绝对的的尺寸和单一切图不能满足这个目标,这就产生了屏幕适配的问题。

    2.1适配思想

    既然要适配多种屏幕,就不能用PS绝对的尺寸思想来设计UI,要用相对的概念来思考屏幕上的各元素排列。

    1. 深入研究相对与绝对的关系,一般秉承一个原则:较长的尺寸用相对理念实现,较短的尺寸用绝对的长度来标注
    2. 具体到实际工作当中:要思考,在特大和特小屏幕手机设备上会不会正常显示;要思考在数据最多最少时显示会不会显示不全,会不会突兀。我认为正确处理绝对与相对的关系,是一个UI设计师最基本的要求
    3. 那怎么用相对的思想考虑UI设计,可以考虑一个元素相对手机边缘或另一元素,居左居右的相对的大小。要这样考虑问题"对齐"、“居左”、“居中“、“等份”、……

    2.2 适配策略

    要做好适配工作,首先要知道页面上的UI元素的排列方式,是由上及下和由左向右的平铺 和由底层到上层的层层叠加 。这些元素的排列方式在PS设计中叫图层,在安卓开发中叫布局。 以下为常用的适配方案,可在UI设计中灵活使用

    1. 多套图多套尺寸文件:Google为我们设计安卓开发包时,除了可以添加不同的尺寸图标文件外,还可以根据不同屏幕尺寸设计不同的尺寸值的配置文件。
    2. 等比划分(安卓中叫权重):当我们需要控制某个元素占据屏幕或另一元素几分之几的位置时,我们可以用此方案
    3. 切图。切icon图时,尽量用透明的正方形背景,不要只切图形的形状图。切图也是门学问,从哪儿开始切,切哪个区域作为一个整体将直接关系到UI适配性。
    4. 上下左右滚动。当页面上的元素较大较多显示不下时,选择特定区域上下滚动,左右可滚动,可跑马灯。
    5. 其他方案。如用程序动态计算屏幕宽高,来调整元素位置。

    三,图标设计思考方式参考

    3.1设计页面

    1. 设计普通安卓页面,首先要考虑状态栏颜色,需要说明的是状态栏只有黑色和白色,没有其他颜色。
    2. 再要考虑状态栏是否沉浸,即在状态栏显示内容。通常显示
    3. 设计页面底色,通常为白色或浅灰色
    4. 设计页面,考虑好内容显示不下,滚动的区域,交互可能会影响设计
    5. 设计好上下左右常规边距,以让开发同学统一页面

    3.2设计各元素

    1. 设计按钮:要考虑4种颜色,常规色、按下色、不可点击色和动态扩展色(或叫水波色)。
    2. 设计图片:设计网络图片,除了考虑大小外,还要考虑做占位图和网络加载失败图。如图片验证码,新闻配图等。
    3. 设计列表:要考虑无数据无网络的展示情况,要考虑下拉刷新上滑加载更多的情况,列表的每一条要考虑点击时的颜色。
    4. 设计文字:要考虑文字最短和最长的情况。文字比较多时,可以在头中尾显示…也可以跑马灯。也可以根据文字的增多动态设计字号。
    5. 设计输入框:提示文字不要太长,太长无法显示,问题暂无法解决。输入文字的框的颜色可设计常规显示,选中时显示颜色。输入框尾部最好添加删除小按钮,有内容选中时显现。
    6. Loading:一,区分loading框设计要符合安卓的设计习惯,不要仿IOS。二,正确区分loading框和loading图标的交互区别。三,可研究实现特定的loading以彰显APP特色。
    7. 设计字体:一,要知道安卓只有一种系统自带的字体,不能像IOS一样灵活切换“苹方”等字体,但安卓有加粗斜体等属性。二,如果项目中确实需要特殊字体的显示,文字较少可以用切图实现,文字较多,可以添加字体文件ttf来实现,但下载的ttf文件通常较大,打到安卓apk包中会导致用户安装时下载包太大。三,那怎么解决这问题呢,我们UI设计师可以把此ttf字体文件用工具进行编辑,删除无用的字的字体,即可解决。如果是需要全字字体,那只能打全ttf文件或网络下载加载ttf文件。另外字体的单位,sp随系统设置字体大小改变而改变,dp则不然。

    四,动画设计

    为了提高用户的体验感,UI设计越来越注重添加动画。其中最典型的就是上面滚动,多层布局,显示不同部分UI,这种模式成为了主流。页面元素随着滚动,可移动可缩放可渐变成为了发展方向。其中做得比较好的app有腾讯新闻,小视频交互等。

    五,图片格式颜色

    5.1 png格式

    其中png和jpg是位图;.9.png和svg图可以理解为矢量图

    图片格式说明
    png安卓中的基本格式
    jpg安卓中也支持
    svg等比放大或缩小
    .9.png俗称点九图,部分区域可拉伸,不可缩小。链接

    5.2 颜色

    UI设计要尽量用透明度来代替浅色,这样设计的好处就是1,半透明的效果比不透明体验感更好。2,开发中,当元素的底色修改了,元素的前景色并不需要改动。

    六,总结

    总之,因为需要适配,在UI设计中尽量用相对动态的思想考虑问题,要用发展的眼光看到这个世界,谢谢。

    结束!

    展开全文
  • 十款最实用的Android UI设计工具

    千次阅读 2017-07-20 12:01:29
    十款最实用的Android UI设计工具
  • 安卓按钮 UI设计案例

    2019-04-06 18:16:47
    安卓按钮 UI设计案例。 一款不错的android按钮风格UI设计,里面有很多不同的样式,相信总有一款是个你。 按钮 ui android app
  • android漂亮的UI界面设计例子,平时做项目时在网上下载的,鉴于分享精神,上传上来。。。。。原型是一个公司程序员的公司任务设计,请别商用,要用请修改。。。
  • ANDROID UI设计工具

    2012-04-26 10:52:08
    ANDROID UI设计工具,方便ANDROID UI设计
  • 用google官方的android UI design 教程制作的,方便离线查阅,页面稍加改动,去掉了页面上原有的导航。
  • 主要为大家详细介绍了Android UI设计之AlertDialog弹窗控件的使用方法,感兴趣的小伙伴们可以参考一下
  • 安卓UI设计图标

    2015-12-17 16:43:50
    安卓UI设计界面图标,很多小图标,可以用于界面设计。打开直接使用,希望对大家有帮助。
  • Android代码-安卓ui设计

    2019-08-06 08:32:36
    MyUi 安卓ui设计 基于android studio 工具项目 收集 整理安卓UI控件
  • android UI设计原则

    2014-06-03 14:40:59
    con Type Standard Asset Sizes in Pixels for Generalized Screen Densities Lowdensityscreen ldpi Mediumdensityscreen mdpi Highdensityscreen hdpi Launcher 36 x 36 px 48 x 48 px 72 x 72 px ...
  • Android UI 界面设计 移动APP
  • Android UI设计常用尺寸及基本知识

    千次阅读 2016-06-25 17:04:32
    为了简单起见,Android把实际屏幕尺寸分为四个广义的大小:小,正常,大,特大。 像素(PX) 代表屏幕上一个物理的像素点代表屏幕上一个物理的像素点。 屏幕密度 为解决Android设备碎片化,引入一个概念DP,也...
  • androidUI设计

    2012-01-14 11:00:16
    androidUI设计器 自动生成.xml文件,很方便!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,619
精华内容 51,447
关键字:

安卓ui设计