我们曾经给大家一个《MeeGo移动终端设备开发UI设计基础教程》,同时很多朋友都在寻找Android UI开发的教程,我们从Android的官方开发者博客找了一份幻灯片,介绍了一些Android UI设计,我们把这个教程整理出来,希望大家喜欢。

想了解全部Android UI教程内容请点击51CTO独家专题:谷歌官方教程:Android UI设计技巧

作为开发者,为啥我们要关心UI,前面的一堆通通可以忽略掉,直接跳到***一条。因为好的UI设计可以帮助我们卖出更多拷贝,赚到更多钱。

简介

这个教程包含5个部分:

◆该做什么,不该做什么

◆设计哲学和考量

◆你必须了解的 UI 框架特性

◆新的 UI 设计模式

◆图标和准则

UI设计5不要

Don’t:

◆不要照搬你在其它平台的UI设计,应该让用户感觉是在真正使用一个 Android 软件,在你的商标显示和平台整体观感之间做好平衡

◆不要过度使用模态对话框

◆不要使用固定的绝对定位的布局

◆不要使用px单位,使用dp或者为文本使用sp

◆ 不要使用太小的字体

UI设计9要素:

Do:

◆为高分辨率的屏幕创建资源(缩小总比放大好)

◆ 需要点击的元素要够大

◆图标设计遵循 Android 的准则

◆ 使用适当的间距(margins, padding)

◆ 支持D-pad和trackball导航

◆正确管理活动(activity)堆栈

◆ 正确处理屏幕方向变化

◆使用主题/样式,尺寸和颜色资源来减少多余的值

◆和视觉交互设计师合作!

4则Android UI的设计哲学:

◆干净而不过于简单

◆关注内容而非修饰

◆保存一致,让用户容易投入其中,可附加少许变化

◆使用云端服务(存储和同步用户资料)来加强用户体验

优秀界面的设计5条准则:

◆关注用户

◆显示正确的内容

◆给予用户适当的回馈

◆有章可循的行为模式

◆容忍错误

关注用户:

◆了解你的用户(年龄,技能,文化,对你的应用的需求,使用的设备,何时何地如何使用设备)

◆‘用户优先’的设计心态 (用户通常是任务导向的行为模式)

◆更早,更频繁的由真实用户来测试

显示正确的内容:

◆最常用的操作需要最快被用户看到并且可用

◆不太常用的功能可以放到菜单里面

给予用户适当的回馈:

◆交互式的UI元素最少需要反映出4种不同的状态 (default,disabled,focused,pressed)

◆保证操作的结果是清晰可见的

◆多给予用户进度提示,但是不要干扰他们当前的操作

有章可循的行为模式:

◆行为模式遵循用户的期望(正确的操作活动堆栈,显示用户期望看到的信息和动作)

◆使用合适的方式来加强功能可见性(可点击的元素就应该看起来是可以点击的)

◆如果用户完成一项任务需要复杂的操作,重新思考你的设计!!!

容忍错误:

◆只允许有意义的操作(适当禁用一些按钮)

◆尽量减少不可回退的操作

◆允许回退(undo)比使用确定对话框更好(实际上,应该尽量少用确定对话框,它对用户是一种干扰)

“如果错误是可能发生的,那它就一定会发生。”

——Donald Norman, The Design of Everyday Things 作者

设计需要考量的8地方:

◆屏幕的物理尺寸

◆屏幕密度

◆屏幕的方向(竖向和横向)

◆主要的UI交互方式(触屏还是使用D-pad/trackball)

◆软键盘还是物理键盘

◆了解不同设备之间的相异之处是非常重要的!

◆阅读CDD,学习设备可能差异的地方

◆了解屏幕尺寸和密度分类

Android UI 框架特性

你必须了解(使用)的 UI 框架特性。

使用相对布局管理界面元素。

译者注:相对布局和线性布局是Android里面常用的两种布局,线性布局比较简单,而相对布局可以做出比较复杂的布局管理,所以仅仅了解线性布局,很多时候是不够的。不过以作者之前Qt的经验来看,Android里面的布局管理功能都比较阳春也不太容易使用,不过这可能是跟移动平台的性能考量有关系。

合理使用资源修饰符

使用资源修饰符来修饰同一套资源的多个不同版本。

◆一个apk包里面会包含所有的资源文件。

◆系统在运行时会根据软硬件环境来自动选择相应修饰符版本的资源。

译者注:最常用的修饰符可能是locale修饰符(制作多语文本),dpi修饰符(为不同密度的屏幕制作不同尺寸的图标和皮肤),orientation修饰符(为横屏和竖屏提供不同的UI布局)。如果系统找不到对应的修饰符版本,它就会选择无修饰符的版本,这个版本通常也是所谓的默认选择。

9-patch drawables

使用 9-patch drawables – foo.9.png

◆9-patch drawables 的语法跟CSS3 border image 类似

◆根据边缘的像素宽度切割出不同的拉伸区域

◆***同时提供 mdpi 和 hdpi 的版本

译者注:drawables 在 Android 里面跟 WPF 里面的 Drawing 类似,用于定义一个可绘制的对象,包括位图,刷子,填充颜色或者以上物件的组合等等。所谓 9-patch drawables,就是将一个 drawable 按照定义的 4 个边缘的宽度大小切割成9个区域,包括4个角落,4条边缘和一个中心区域,当把这个 drawable 绘制到一个任意矩形区域时,drawable 的各个区域有不同的拉伸控制(角落不拉伸,横边横向拉伸,竖边竖向拉伸,中心区域横竖向都拉伸)。通常使用 9-patch drawable 一般是为了绘制出比较漂亮的带圆角背景,这样可以避免圆角及边缘被任意拉伸导致变形。当然,如果你的程序里面绘制的图像和目标区域大小完全一样,就不需要那么麻烦,不过以 Android 的状况来说,为了适应多种设备,***不要事先假设目标区域的像素大小。

使用状态列表和多层叠加来制作具备复杂效果的可绘制图像

使用 Selector (state list) drawables (状态列表)来提供不同状态(normal,disabled,focused,pressed…)下的绘制图像。

使用 Layer drawables (多层叠加)来制作具备复杂效果的可绘制图像。

译者注:所谓多层叠加,使用PS来制作图标和皮肤的同学可能都清楚,比如说一个按钮的PS模板通常会包括所谓的background层定义底色,mask层定义轮廓,shine层定义前景的高亮效果。而 Android 里面允许你直接在 XML 脚本里面使用 Layer drawables 的语法来定义上述的多层叠加效果,这样可能比在PS里面直接做好要更灵活一些,并且有的层可以是来自png位图,有的层可以是直接通过 XML 脚本生成(比如纯色,过渡色等等)。

【编辑推荐】

【责任编辑:立方 TEL:(010)68476606】

点赞 0

android教程 - android ui 介绍,多图详解 “Android UI”设计官方教程相关推荐

  1. android ui框架详解,多图详解 “Android UI”设计官方教程(二)

    编者注:本文为Android的官方开发者博客发了一份幻灯片的翻译文档的第二部分,专门介绍了一些Android UI设计的小贴士,我们在介绍这个幻灯片的第一部分<多图详解 "Androi ...

  2. android系统加载主题的流程,详解Android布局加载流程源码

    一.首先看布局层次 看这么几张图 我们会发现DecorView里面包裹的内容可能会随着不同的情况而变化,但是在Decor之前的层次关系都是固定的.即Activity包裹PhoneWindow,Phon ...

  3. Google工程师多图详解Android系统架构

    近日,Google的一位工程师Sans Serif发布了一篇博文非常清楚的描述了Android系统架构,中国移动通信研究院院长黄晓庆在新浪微博上推荐了该文,并认为文中对Android的介绍很好,您可以 ...

  4. android 子module混淆_Android 矢量图详解

    官方文档 关于 Vector,在官方开发指南中介绍.本文章是由个人翻译官方指南然后添加个人理解完成. 由于个人精力有限,多个渠道发布,排版上可能会有问题,如果影响查看,请移步 Android 开发者家 ...

  5. android 沉浸式状态栏 兼容低版本,详解Android沉浸式实现兼容解决办法

    自android5.0开始,沉浸式状态栏似乎成为一种潮流,应用里缺少沉浸式总感觉少些什么.于是乎,我开始到处找如何兼容低版本的沉浸式,由于Android平台跨度问题,总遇到一些不如人意的问题.终于,皇 ...

  6. android 快速开发常用工具类,实例详解Android快速开发工具类总结

    一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException ...

  7. android代码实现手机加速功能吗,详解Android开发中硬件加速支持的使用方法

    Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存. 开启或关闭硬件加速: 由于硬件加速自身并非完美 ...

  8. android安装apk时启动一个服务器,详解Android中App的启动界面Splash的编写方法

    一.Splash界面的作用用来展现产品的Logo 应用程序初始化的操作 检查应用程序的版本 检查当前应用程序是否合法注册 二.界面的xml定义写一个布局背景设置为产品的logo图片,再添加一个text ...

  9. 详解惠普webOS官方教程 如何下载安装SDK和PDK(1)

    [51CTO译文]惠普webOS的SDK包含JavaScript开发和C/C++开发所必需的库.对于JavaScript的开发,该SDK包括的命令行工具需要封装.下载和调试应用程序,以及示例代码.参考 ...

最新文章

  1. PHP语言Yii框架,Yii框架多语言站点配置方法分析【中文/英文切换站点】
  2. php mysql预约_php实现预约购买mysql怎样规划?
  3. php 导出word 高度,PHP导出word
  4. linux安装mq报5724,linux下MQ简单配置手册.doc
  5. 克服浮躁_设计思维:您克服并赢得低迷的最终工具。
  6. 大数据_Flink_数据处理_运行时架构3_yarn上作业提交流程---Flink工作笔记0018
  7. 优步杭州推出顺路接单功能,不久将向全国开放!
  8. 为什么 Java 进程使用的 RAM 比 Heap Size 大?​ | CSDN博文精选
  9. URL Scheme获取帮助文档
  10. Asio驱动开发学习笔记(1)
  11. matlabWeibull概率图绘制及讲解
  12. ubuntu18.04 xamp框架搭建
  13. 2022年数学建模国赛c题论文+代码(附详解)
  14. Python实现线性回归拟合并绘图
  15. java移动拼图游戏模拟
  16. 数据仓库ETL工具箱——实时ETL系统
  17. 【补作业】msp430单片机(一)控制LED灯的亮灭
  18. linux下openssl版本问题 /lib64/libcrypto.so.10: version `OPENSSL_1.0.2' not found
  19. 基于事件的视觉传感器及其应用综述
  20. Qt linguist

热门文章

  1. 使用批处理实现mysql数据库备份与上传
  2. SCCM 2012系列1 服务器准备上
  3. win7+iis7.5下的asp.net网站发布系列问题
  4. 学习官方示例 - System.TClass
  5. BCH或将在年底超越ETH
  6. (十六)java springcloud版b2b2c社交电商spring cloud分布式微服务-使用spring cloud Bus刷新配置...
  7. mongodb分片扩展架构
  8. BZOJ4590 [Shoi2015]自动刷题机
  9. 工控安全要避开传统IT安全思路的几个“暗坑”
  10. Caffe Windows版本的编译