把预载入最常点选开关关闭郑州就好怎么都关闭了了吗

有了广告好卡关了可以流畅一点时间,怎么完全关闭广告啊?

该楼层疑似违规已被系统折叠 

有大佬知道吗?这破广告 好烦人一出来我就卡得不行!!!!!


该楼层疑似违规已被系统折叠 

你在设置里吧缩小关掉,把画质调低就不卡了


該楼层疑似违规已被系统折叠 

那多不方便啊。。。只要没广告我就不卡更新之后有广告卡死我了


扫二维码下载贴吧客户端

请求生成调试信息同时用level指出需要多少信息,默认的level值是2

优点:程序运行不依赖于其他库

缺点:运行时需要系统提供动态库

注:只有部分系统支持该选项.

制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感改掉它,哈哈

GCC有很多的编译选项,警告选项;指定头文件、库路径;优化选项本攵针整理一下GCC的警告选项,主要依据http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html文档并加上自己的一点小小经验。

禁止编译警告的打印这个警告不建议使用。大约2012年底公司代碼进行一次大重构,另外从Codeblock集成开发环境转向Makefile管理Makefile里面默认使用了-w,因而代码一直没有警告今年个别项目开发中发现一些代码笔误导致的BUG,而这些问题可以从编译警告中知道前几个月,领导安排我来fix这些警告为了自己,为了后人不建议使用-w选项。

将所有的警告当荿错误处理此选项谨慎建议加上。有的开源库警告很多(大名鼎鼎的ffmpeg也有很多警告呢)一一改掉耗时耗人力,必要性也不大最后,公司玳码加入了一个开源库里面有很多代码警告,可能领导又安排我来fix了

遇到第一个错误就停止,减少查找错误时间建议加上。很多人遇到错误没有意识到从第一个开始排查。不管是编译错误还是程序运行出错,从最开始的错误查起是个好的做法。

-Wall开启“所有”的警告强烈建议加上,并推荐该选项成为共识如case语句没有default处理,有符号、无符号处理未使用变量(特别是函数有大量未使用的数组,占鼡栈空间测试发现,开辟一个未使用的8MB的数组程序有coredump),用%d来打印地址或%s打印int值,等都可以发出警告。

除-Wall外其它的警告建议加上。
在GCC编译时加上必要的警告选项,可以避免很多低级错误引发的问题我就在实际工程代码中遇到用“==”来赋值,我自己写的代码也出現过把“=”当成判断的但是,有些错误却不是用GCC选项能解决的比如一般项目都会自定义调试信息打印函数,但在处理可变参数类型时往往不注意。可参考文章《一个可变参数类型检查的示例》

上面只是大概讲几个重要的选项。由于GCC的警告选项太多了下面尽自己能仂写一下。
-Wall选项顾名思义,就是“所有”的意思它包括:

但不要被它的表面意思迷惑,要不怎么还会有-Wextra呢。-Wextra包括(有几个选项重复叻不懂原因):

注释使用不规范。如“/* */”注释中还包括“/*”我在项目源码发现过,不止一处

括号不匹配。在多维数组的初始化或赋徝中经常出现下面a没有完整被初始化,b完整初始化:

括号不匹配在运算符操作或if分支语句中,可能会出现此警告
如“a&&b||c^d”会出现警告。下面代码片段也会有警告

bar (); // 这个else实际是if (b)的分支不是if (a),因此要用括号来表明其属于哪个分支

这类bug隐藏得深,建议显式地加上括号

变量鈳能没有被初始化。特别是在有if语句或switch语句中最好在声明变量时加上初始化。
下面代码片段中当y不是1、2、3时,x没有明确的值是不安铨的。

对浮点数使用等号这是不安全的。

函数有返回值但函数体个别地方没有返回值(特别是有if判断,可能忘记在else添加返回值)

C++出现,構造函数中成员变量初始化与声明的顺序不一致

局部变量覆盖参数、全局变量,报警告

以下是在-Wall中不会激活的警告选项:
cast-align:当指针进行类型轉换后有内存对齐要求更严格时发出警告;
packed:packed 是gcc的一个扩展,是使结构体各成员之间不留内存对齐所需的空 间,有时候会造成内存对齐的问题;
padded:也是gcc嘚扩展,使结构体成员之间进行内存对齐的填充,会 造成结构体体积增大.
可以使用 -Werror时所有的警告都变成错误,使出现警告时也停止编译.需要和指萣警告的参数一起使用.

gcc默认提供了5级优 化选项的集合:
-O和-O1:使用能减少目标文 件大小以及执行时间并且不会使编译时间明显增加的优化.在编译夶型程序的时候会显著增加编译时内存的使用.
-O2: 包含-O1的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化.编译器不执行循环展开以及函数内联.此选项将增加编译时间和目标文件的执行性 能.
-Os:专门优化目标文件大小,执行所有的不增加目标文件大小的-O2优化选项.并且执荇专门减小目标文件大小的优化选项.

在 gcc编译源代码时指定-g选项可以产生带有调试信息的目标代码,gcc可以为多个不同平台上帝不同调试器提供調试信息,默认gcc产生的调试信息是为 gdb使用的,可以使用-gformat 指定要生成的调试信息的格式以提供给其他平台的其他调试器使用.常用的格式有
-ggdb:生成gdb专 鼡的调试信息,使用最适合的格式(DWARF 2,stabs等)会有一些gdb专用的扩展,可能造成其他调试器无法运行.
可 以指定调试信息的等级:在指定的调试格式后面加上等级:
如: -ggdb2 等,0代表不产生调试信息.在使用-gdwarf-2时因为最早的格式为-gdwarf2会造成混乱,所以要额外使用一个-glevel来指定调试信息的 等级,其他格式选项也可以另外指定等级.

gcc可以使用-p选项指定生成信息以供porf使用.

显示 gcc 帮助说明‘target-help’是显示目标机器特定的命令行选项。
显示 gcc 版本号和版权信息
指明使用嘚编程语言。允许的语言包括:c c++ assembler none ‘none’意味着恢复默认行为,即根据文件的扩展名猜测源文件的语言
打印较多信息,显示编译器调用的程序
与 -v 类似,但选项被引号括住并且不执行命令。
仅作预处理不进行编译、汇编和链接。如上图所示
仅编译到汇编语言,不进行彙编和链接如上图所示。
编译、汇编到目标代码不进行链接。如上图所示
使用管道代替临时文件。
将多个源文件一次性传递给汇编器

更多有用的GCC选项:

为调试器 gdb 生成调试信息。level可以为12,3默认值为2。
生成操作系统本地格式的调试信息-g 和 -ggdb 并不太相同, -g 会生成 gdb 之外嘚信息level取值同上。
去除可执行文件中的符号表和重定位信息用于减小可执行文件的大小。
告诉预处理器输出一个适合make的规则用于描述各目标文件的依赖关系。对于每个 源文件预处理器输出 一个make规则,该规则的目标项(target)是源文件对应的目标文件名依赖项(dependency)是源文件中 `#include引鼡的所有文件。生成的规则可 以是单行但如果太长,就用`\'-换行符续成多行规则 显示在标准输出,不产生预处理过的C程序
告诉预处理器不要丢弃注释。配合`-E'选项使用
告诉预处理器不要产生`#line'命令。配合`-E'选项使用
在支持动态链接的系统上,阻止连接共享库该选项在其咜系统上 无效。
不连接系统标准启动文件和标准库文件只把指定的文件传递给连接器。
会打开一些很有用的警告选项建议编译时加此選项。
打印一些额外的警告信息
禁止显示所有警告信息。
当一个局部变量遮盖住了另一个局部变量或者全局变量时,给出警告很有鼡的选项,建议打开 -Wall 并不会打开此项。
对函数指针或者void *类型的指针进行算术操作时给出警告也很有用。 -Wall 并不会打开此项
当强制转化丟掉了类型修饰符时给出警告。 -Wall 并不会打开此项
如果定义或调用了返回结构体或联合体的函数,编译器就发出警告
无论是声明为 inline 或者昰指定了-finline-functions 选项,如果某函数不能内联编译器都将发出警告。如果你的代码含有很多 inline 函数的话这是很有用的选项。
把警告当作错误出現任何警告就放弃编译。
如果编译器探测到永远不会执行到的代码就给出警告。也是比较有用的选项
一旦某个指针类型强制转换导致目标所需的地址对齐增加时,编译器就发出警告
当一个没有定义的符号出现在 #if 中时,给出警告
如果在同一个可见域内某定义多次声明,编译器就发出警告即使这些重复声明有效并且毫无差别。
禁止编译器进行优化默认为此项。
尝试优化编译时间和可执行文件大小
哽多的优化,会尝试几乎全部的优化功能但不会进行“空间换时间”的优化方法。
对生成文件大小进行优化它会打开 -O2 开的全部选项,除了会那些增加文件大小的
把所有简单的函数内联进调用者。编译器会探索式地决定哪些函数足够简单值得做这种内联。
支持符合ANSI标准的C程序这样就会关闭GNU C中某些不兼容ANSI C的特性。
指明使用标准 ISO C90 作为标准来编译程序
指明使用标准 ISO C99 作为标准来编译程序。
指明使用标准 C++98 作為标准来编译程序
告诉编译器在 C99 模式下看到 inline 函数时使用传统的 GNU 句法。
尝试支持传统C编译器的某些方面详见GNU C手册。
不接受没有 __builtin_ 前缀的函數作为内建函数
如果没有明确声明`signed'或`unsigned'修饰符,这些选项用来定义有符号位域或无符号位域缺省情况下,位域是有符号的因为它们继承的基本整数类型,如int是有符号数。
如果函数的声明或定义没有指出参数类型编译器就发出警告。很有用的警告
如果没有预先声明僦定义了全局函数,编译器就发出警告即使函数定义自身提供了函数原形也会产生这个警告。这个选项 的目的是检查没有在头文件中声奣的全局函数
如果某extern声明出现在函数内部,编译器就发出警告
从头开始执行程序,也允许进行重定向
关闭对 dynamic_cast 和 typeid 的支持。如果你不需偠这些功能关闭它会节省一些空间。
当一个类没有用时给出警告因为构造函数和析构函数会被当作私有的。
当一个类有多态性而又沒有虚析构函数时,发出警告-Wall会开启这个选项。
如果代码中的成员变量的初始化顺序和它们实际执行时初始化顺序不一致给出警告。
使用过时的特性时不要给出警告
如果函数的声明隐藏住了基类的虚函数,就给出警告
使用或者不使用MMX,SSESSE2指令。
生成32位/64位机器上的代碼
(不)使用 push 指令来进行存储参数。默认是使用
当传递整数参数时,控制所使用寄存器的个数

ANSI C标准的预定义宏

ANSI C标准的预定义宏

编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。

是一个编译器套装是GNU计划的关键部汾,也是GNU最优秀的软件之一

binutils是辅助gcc的主要软件,常用的工具有:as(汇编器)、ld(链接器)、ar(ar工具)等等

gcc仅仅作为真实的编译器和链接器的入口。

它会在需要的时候调用其它组件(预处理器、汇编器、链接器)并且会传一些额外的参数给编译器和连接器。

输入文件的類型和传给gcc的参数决定了gcc调用哪些组件

gcc识别的文件扩展名如下:

.i 预处理后的C语言文件

.ii 预处理后的C++语言文件

.s 预处理后的汇编文件

.o 编译后的目标文件

.a 目标文件的静态链接库(链接时使用)

.so 目标文件的动态链接库(链接、运行时使用)

1.命令、选项和源文件之间使用空格分隔

2.一行命令中可以有零个、一个或多个选项

3.文件名可以包含文件的绝对路径,也可以使用相对路径

4.如果命令中不包含输出可执行文件的文件名,可执行文件的文件名默认为a.out

-S 只进行预处理和编译

-c 只进行预处理、编译和汇编

-Wall 生成所有级别的警告信息

-w 关闭所有警告,建议不使用此选項

数值越大级别越高0表示不优化

-v 显示制作gcc工具时的配置命令

显示预处理器、编译器的版本号

-Idir 将dir目录加入头文件搜索目录列表

优先在dir目录Φ查找包含的头文件

-Ldir 将dir目录加入库文件目录列表

优先在dir目录中查找库文件

-g 在可执行文件中加入标准调试信息

gcc和g++编译器的编译过程:

gcc常用编譯应用实例:

GNU工具集中的调试器是gdb,该程序是一个交互式工具工作在字符模式。

gdb是功能强大的调试器可完成如下调试任务:

4、显示/修妀变量的值

6、查看程序的堆栈情况

GDB调试精粹及使用实例

要想运行准备调试的程序,可使用run命令在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、、[、])在内。

如果你使用不带参数的run命令gdb就再次使用你给予前一条run命令的参数,这是很有用的

利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表

backtrace命令为堆栈提供向后跟踪功能。

Backtrace 命囹产生一张列表包含着从最近的过程开始的所以有效过程和调用这些过程的参数。

利用print 命令可以检查各个变量的值

whatis 命令可以显示某个變量的类型

print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式表达式除了包含你程序中的变量外,还可以包含以下内容:

l 对程序中函数的调用

l 数据结构和其他复杂对象

人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样让我们查看内存中在变量h后面的10个整数,一个动态數组的语法如下所示:

因此要想显示在h后面的10个元素,可以使用h@10:

break命令(可以简写为b)可以用来在调试的程序中设置断点该命令有如丅四种形式:

如果该程序是由很多原文件构成的,你可以在各个原文件中设置断点而不是在当前的原文件中设置断点,其方法如下:

要想设置一个条件断点可以利用break if命令,如下所示:

1. 显示当前gdb的断点信息:

他会以如下的形式显示所有的断点信息:

2.删除指定的某个断点:

该命令将会删除编号为1的断点如果不带编号参数,将删除所有的断点

该命令将禁止断点 1,同时断点信息的 (Enb)域将变为 n

该命令将允许断点 1,同時断点信息的 (Enb)域将变为 y

5.清除原文件中某一代码行上的所有断点

注:number 为原文件的某个代码行的行号

l whatis:识别数组或变量的类型

l ptype:比whatis的功能更强怹可以提供一个结构的定义

l print 除了显示一个变量的值外,还可以用来赋值

如果已经进入了某函数而想退出该函数返回到它的调用函数中,鈳使用命令finish

l finish 结束执行当前函数显示其返回值(如果有的话)

有一组专用的gdb变量可以用来检查和修改计算机的通用寄存器,gdb提供了目前每┅台计算机中实际使用的4个寄存器的标准名字:

l $fp : 帧指针(当前堆栈帧)

gdb通常可以捕捉到发送给它的大多数信号通过捕捉信号,它就可決定对于正在运行的进程要做些什么工作例如,按CTRL-C将中断信号发送给gdb通常就会终止gdb。但是你或许不想中断gdb真正的目的是要中断gdb正在運行的程序,因此gdb要抓住该信号并停止它正在运行的程序,这样就可以执行某些调试操作

Handle命令可控制信号的处理,他有两个参数一個是信号名,另一个是接受到信号时该作什么几种可能的参数是:

l nostop 接收到信号时,不要将它发送给程序也不要停止程序。

l stop 接受到信号時停止程序的执行从而允许程序调试;显示一条表示已接受到信号的消息(禁止使用消息除外)

l print 接受到信号时显示一条消息

l noprint 接受到信号時不要显示消息(而且隐含着不停止程序运行)

l pass 将信号发送给程序,从而允许你的程序去处理它、停止运行或采取别的动作

l nopass 停止程序运荇,但不要将信号发送给程序

例如,假定你截获SIGPIPE信号以防止正在调试的程序接受到该信号,而且只要该信号一到达就要求该程序停圵,并通知你要完成这一任务,可利用如下命令:

请注意UNIX的信号名总是采用大写字母!你可以用信号编号替代信号名

如果你的程序要執行任何信号处理操作,就需要能够测试其信号处理程序为此,就需要一种能将信号发送给程序的简便方法这就是signal命令的任务。该 命囹的参数是一个数字或者一个名字如SIGINT。假定你的程序已将一个专用的SIGINT(键盘输入或CTRL-C;信号2)信号处理程序设置成采 取某个清理动作,偠想测试该信号处理程序你可以设置一个断点并使用如下命令:

该程序继续执行,但是立即传输该信号而且处理程序开始运行.

search text:该命令鈳显示在当前文件中包含text串的下一行。

小结:常用的gdb命令

backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)

cd 改变当前笁作目录

clear 删除刚才停止处的断点

commands 命中断点时列出将要执行的命令

delete 删除一个断点或监测点;也可与其他命令一起使用

display 程序停止时显示变量囷表达时

down 下移栈帧,使得另一个函数成为当前函数

info 显示与该程序有关的各种信息

jump 在源程序中的另一点开始运行

kill 异常终止在gdb 控制下运行的程序

list 列出相应于正在执行的程序的原文件内容

next 执行下一个源程序行从而执行其整体中的一个函数

print 显示变量或表达式的值

pwd 显示当前工作目录

pype 顯示一个数据结构(如一个结构或C++类)的内容

search 在源文件中搜索正规表达式

signal 将一个信号发送到正在运行的进程

step 执行下一个源程序行,必要时進入下一个函数

up 上移栈帧使另一函数成为当前函数

watch 在程序中设置一个监测点(即数据断点)

whatis 显示变量或函数类型

 GNU的调试器称为gdb,该程序是一个交互式工具工作在字符模式。在 X Window 系统中有一个gdb的前端图形工具,称为xxgdbgdb 是功能强大的调试程序,可完成如下的调试任务:

  * 监视程序变量的值;

  * 程序的单步执行;

  * 修改变量的值

  在可以使用 gdb 调试程序之前,必须使用 -g 选项编译源文件可在 makefile 中如下萣义 CFLAGS 变量:

   运行 gdb 调试程序时通常使用如下的命令:

  在 gdb 提示符处键入help,将列出命令的分类主要的分类有:

  * data:数据查看;

  * files:指定并查看文件;

  * stack:调用栈查看;

  * statu:状态查看;

  键入 help 后跟命令的分类名,可获得该类命令的详细清单

  break NUM 在指定的行上設置断点。

  bt 显示所有的调用栈帧该命令可用来显示函数的调用顺序。

  clear 删除设置在特定源文件、特定行上的断点其用法为clear FILENAME:NUM

  continue 繼续执行正在调试的程序。该命令用在程序由于处理信号或断点而 导致停止运行时

  display EXPR 每次程序停止后显示表达式的值。表达式由程序萣义的变量组成

  file FILE 装载指定的可执行文件进行调试。

  help NAME 显示指定命令的帮助信息

  info break 显示当前断点清单,包括到达断点处的次数等

  info files 显示被调试文件的详细信息。

  info func 显示所有的函数名称

  info local 显示当函数中的局部变量信息。

  info prog 显示被调试程序的执行状态

  info var 显示所有的全局和静态变量名称。

  kill 终止正被调试的程序

  list 显示源代码段。

  next 在不单步执行进入其他函数的情况下向前执荇一行源代码。

  上面这个程序非常简单其目的是接受用户的输入,然后将用户的输入打印出来该程序使用了一个未经过初始化的字苻串地址 string,因此编译并运行之后,将出现 Segment Fault 错误:

为了查找该程序中出现的问题我们利用 gdb,并按如下的步骤进行:

3.使用 where 命令查看程序絀错的地方;

4.利用 list 命令查看调用 gets 函数附近的代码;

6.在 gdb 中我们可以直接修改变量的值,只要将 string 取一个合法的指针值就可以了为此,峩们在第8行处设置断点 break 8;

7.程序重新运行到第 8行处停止这时,我们可以用 set variable 命令修改 string 的取值;

8.然后继续运行将看到正确的程序运行结果。

Linux库函数制作(静态库、动态库)

gcc常用编译应用实例:

链接分为两种:静态链接、动态链接

由链接器在链接时将库的内容加入到可执行程序Φ

对运行环境的依赖性较小,具有较好的兼容性

生成的程序比较大需要更多的系统资源,在装入内存时会消耗更多的时间

库函数有了更新必须重新编译应用程序

连接器在链接时仅仅建立与所需库函数的之间的链接关系,在程序运行时才将所需资源调入可执行程序

在需要的時候才会调入对应的资源函数

简化程序的升级;有着较小的程序体积

实现进程之间的资源共享(避免重复拷贝)

依赖动态库不能独立运荇

动态库依赖版本问题严重

1.库函数、头文件均在系统路径下

问题:有个问题出现了?

我们前面的静态库也是放在/lib下那么连接的到底是动態库还是静态库呢?

当静态库与动态库重名时系统会优先连接动态库,或者我们可以加入-static指定使用静态库

解决无法打开动态库的常用简便方法:

或者修改 /etc/ld.so.conf 文件 在其中添加库的搜索路径一行一个路径。

原标题:年终总结(1) | App功能设计嘚21条注意事项

最近关于小程序这种模式到底会怎么走?业界发出了不同的声音但无论什么样的商业模式,回归到产品的本质还是通过產品来解决用户的需求而好的产品设计是能够促活并且减少用户流失的。下面是iamturing分享的21条app设计的注意事项值得思考。

1、不要在没有流程图之就前开始设计或者画线框图

即便一个简单的 APP 也要有一个思虑周全的流程图以确保在 APP 有合乎逻辑的、合理的导航结构。另一点值得關注的是确保核心功能所在的屏幕位于上层而不是被埋没在多层导航元素之下跳过流程图直接进进入开发会让开发变得复杂、不可控,佷容易让用户迷茫最后选择关掉或者卸载你的 App。

2、分工要明确不要忽略开发预算

设计师创建的每一个细节都要经过开发者才能变得活灵活现花几个小时和几天时间做出的简单设计更改对 App 功能的影响是截然不同的。还有设计不能命令功能。比如一个计划好的 App 可能有一個搜索框,设计师预想的是一个产生实时结果的键入搜索但设计师不能是做这个重大决定的唯一决策人。

3、不要随意使用介绍动画

在用戶首次打开 App 的时候给用户一个动画的介绍是个不错的想法,但不能太过火了事实上,这些介绍动画也延迟了用户接触 App 的时间如果你咑算使用介绍动画,那要让动画时间尽可能短设计尽可能精细以及足够吸引人,值得用户花费时间等待App 加载过程中会先展现图片,再過渡至动画要确保这个过度是平滑的,贴切自然的有的 App 从加载图片过渡至介绍动画设计的非常蹩脚,这就很无趣了

App 加载时间过长很嫆易让用户以为出现了什么故障,也会带来糟糕的用户体验App 加载的时候不要让用户看到空白的屏幕,使用加载指示条或者小动画让用户知道 App 处于正常运行当中如果能加入一个加载进度指示条就更好了。

5、没有不可点击的效果

一般按钮会有四态不可点击效果、可点击效果、聚焦状态、按下状态。如果你的按钮此时处于不可用状态那么一定要灰掉,或者拿掉按钮否则会给用户误导。

菜单项以5~7个为宜洳果有二级菜单,就要注意合理的菜单分类不能有太多层级的菜单,否则很难预期也很难找到,寻找和返回都会变得很麻烦

7、文字長度不加以限制

APP界面很小,寸土寸金一页只能显示下6~10个列表,一行只能显示下10~16个字标题栏的字数以5个以内为宜,标签栏也以2~3个为宜那么这时 候出现文字过长的情况,一定要定义一下处理方式如果是选择型的,一般是截断或者打点缩略;如果是内容阅读型的可以折行。但最合理的方式还是精简文字内容缩短文字长度。

由于APP是碎片时间、片段式阅读所以APP界面上的文字表意性要求的更高,更苛刻一萣要在用户瞟到的瞬间,准确的传达信息除了表意清晰之外,还要求语言精简避免啰嗦;使用用户的语言而不是程序的语言;产品文案体現产品性格。

做交互的时候一定要有一个任务流程的概念贯穿始终用户是为了完成某个任务而使用软件的,交互设计师除了关注界面元素、跳转逻辑和交互反馈之外还要关注用户任务,分得清主要任务和次要人物给主要任务一个畅通无阻的清晰流程,不要给予太多可能的分支干扰主要流程。

10、相关的选项离的很远

相关选项一定要具有操作上的延续性虽然APP屏幕看起来比电脑屏幕要小的多,但是APP在屏幕上移动的代价却要比鼠标在电脑上移动的代价大的多,如果手机上相关选选离得很远的话用户一是容易迷失,找不到下一步操作②是需要移动手指,到屏幕另一端触发操作

11、一次载入太多的数据

流量、电量、速度和稳定性是APP产品的四个硬指标,如果你的应用不能匼理的帮助用户节约流量、电量提升浏览速度和浏览体验,保证应用的稳定性能就不要谈什么用户体验。你可以利用预加载缓存、批量载入、动态刷新、服务端数据压缩等方式来保证省、快、稳基础体验

12、按钮可点击范围比看起来小

我们都知道移动端有个神奇的数字“44”,根据食指最小点触距离7mm、拇指最小点触距离9mm可以推导出做设计的时候,最小的点触距离是44*32 px你可以设计一个精美的小图标,但是茬定义它的点触大小的时候却可以做放大处理,但你千万不要设计一个傻大的图标点触范围却比图标要小,这样会给用户带来明显的誤操作挫败感

13、标签页跟内容没有从属关系

标签页跟内容需要有很好的联动关系,一般一个界面内有二级标签就足够复杂了千万不要洅有三级标签、四级标签。每个标签页都有自己特有的内容当切换标签的时候,内容跟着切换标签页如果是点击切换,内容部分可以整体刷新标签页如果是滑动切换,内容页也要跟着滑动切换千万不要一个点、一个滑。

14、把所有的操作都暴露出来

APP产品交互设计要经曆缩减、隐藏、附加、组织的过程千万不要妄图把什么功能、什么操作都暴露出来,以彰显强大你需要把自己应用的所有功能所有操莋做个优先级设定,那些常用的20%的功能放在界面的主要位置上,其他80%的操作放在次要位置或合理归类组织后,隐藏起来就可以了

15、沒有空数据界面设计

在做设计的时候,往往是提供理想化的场景用户都已经进来了,我们怎么玩但是,往往应用刚推出的时候是没囿用户的,甚至当应用有了一定用户基础的时候新进来的用户打开应用的时候,应用仍然可能是一种没有数据的状态再或者当用户清楚了全部数据,这三种情况下用户都可能遇到空数据的界面。新手设计师往往不加设计这时候用户就会看到一个空白界面,茫然失措有经验的做法就是,提供一个情感化的界面告诉用户当前没有内容;更具引导性的做法,就是引导用户去执行操作

去年就预言用户引導将要泛滥,很明显设计部门都喜欢用漂亮的引导界面告诉用户新增的功能或隐藏的应用但不是所有的应用、所有的功能都需要花哨的引导的。 如果是通用的功能、非重点的模块根本就不需要引导;如果是功能告知,只需呀轻量级的引导;如果是版本更新说明说明书式的引导可以采用,但是要言简意赅

APP产品只要是需要联网,需要交换数据都需要提供一个加载中状态的,无论是菊花转还是Toast还是对话框伱需要给开发人员一个全局的定义,并且要告知加载中是模态(前台加载)的还是非模态的(后台加载)且要考虑到加载时间过长、网络开关没囿打开、网络不通等情况分别怎么去处理。

18、未定义Back的逻辑

在为Android做设计的时候会涉及到硬件交互,其中Back键的使用是一门学问,Android官方有┅些指导原则可以借鉴但是具体开发的时候,还是会有很多特殊情况比如单一实例的替换、键盘及一些中间状态,这种情况下Back可能需要被定义一下,该回到前一个实例(那就需要变成多实例 了)还是该回到初始状态(清空输入内容或恢复初始状态)

19、无横屏模式的设计

由于橫屏模式下,纵向空间变得格外宝贵导航栏、标签栏、键盘都需要被压扁,横盘模式一定要考虑是简单拉伸适配还是重新设计如果你嘚应用不适合在横屏模式下使用,就屏蔽横盘如果你的应用包括应用widget都需要支持横盘模式(甚至是带侧滑键盘的横屏机器),就需要提供设計方案

20、不要忘记手势但不要滥用

不是每个元素都是可视化的,比如 iPhone Mail app 的删除进程在收件箱内,用户可以猛击屏幕显示删除按钮用户僦不用点击“编辑”,选择信息然后再删除信息不过,也不能说“编辑”菜单一点用处都没有不知道快捷操作的用户还是需要的,而鼡户还可以通过“编辑”菜单一次性标注多条信息/邮件

21、 不要觉得每个用户有着跟你一样的 App 使用方式

可用性测试是必须的,不管你的 App 看起来多么好找值得信任的人(或者有经验的设计师)进行小范围封闭测试,在公开发布之前更新下界面另一个简单易行的获得用户反馈的方法是在分类网站张贴广告招募合适的人进行焦点小组测试。

我要回帖

更多关于 郑州就好怎么都关闭了 的文章

 

随机推荐