- 浏览: 46138 次
- 性别:
- 来自: 上海
最新评论
-
hanxie1121:
书读多了
思考一下!!!!my android -
huyong479072052:
不用说应届毕业生了,现在中国搞android的开发的有几个能达 ...
思考一下!!!!my android -
zhanhao:
顶!
思考一下!!!!my android -
cectsky:
你妈喊你回家吃饭
回调(callback)方法
Android 设计之流畅设计
- 博客分类:
- android
即使你的应用程序是快速且响应灵敏的,但一些设计仍然会给用户造成问题——与其它应用程序或对话框未事先计划的交互,意外的数据丢失,意料之外的阻塞等等。避免这些问题,有助于理解应用程序运行的上下文和系统的交互过程,而这些又正影响着你的应用程序。简而言之,你应该竭尽全力去开发一个与系统和其它应用程序流畅交互的应用程序。
一个常见的流畅问题是,一个应用程序的后台处理——例如,一个 Service或者BroadcastReceiver——弹出一个对话框来响应一些事件。这可能看起来没啥大碍,尤其是你在模拟器上单独地构建和测试你的应用程序的时候。然而,当你的应用程序运行在真机上时,有可能你的应用程序在没有获得用户焦点时后台处理显示了一个对话框。因此,可能会出现在活跃的应用程序后方显示了你的应用程序的对话框,或者从当前应用程序夺取焦点显示了一个对话框,而不管当前用户正在做什么(例如,正在打电话)。那种行为,对应用程序或用户来说,就不应该出现。
为了避免这些问题,你的应用程序应该使用合适的系统资源来通知用户——Notification类。使用Notification,你的应用程序可以在状态栏显示一个 icon来通知用户已经发生的事情,而不是夺取焦点和打断用户。
另一个流畅问题的例子是未能正确实现Activity的 onPause()和其它生命周期方法而造成意外丢失了状态或用户数据。又或者,如果你的应用程序想暴露数据给其它应用程序使用,你应该通过 ContentProvider来暴露,而不是(举例)通过一个可读的原始文件或数据库来实现。
这些例子的共同点是它们都应该与系统和其它应用程序协作好。Android系统设计时,就把应用程序看作是一堆松散耦合的组件,而不是一堆黑盒代码。作为开发者来说,允许我们把整个系统看作是更大的组件集合。这有益于我们可以与其它应用程序进行清晰无缝的集成,因此,作为回报,我们应该更好的设计我们的代码。
下面将讨论常见的流畅问题以及如何避免它们:
1)别丢弃数据
一定要记住Android是一个移动平台。可以显而易见地说,其它Activity(例如,“Incoming Phone Call”应用程序)可能会在任何时候弹出来遮盖你的Activity,记住这个事实很重要。因为这个过程将触发 onSaveInstanceState()和 onPause()方法,并可能导致你的应用程序被杀死。
如果用户在你的应用程序中正在编辑数据时,其它 Activity出现了,这时,你的应用程序被杀死时可能丢失那些数据。当然了,除非你事先保存了正在进行的工作。“Android方式”是这样做的:能接收和编辑用户输入的 Android应用程序应该重写 onSaveInstanceState()方法,并以恰当的方式保存它们的状态。当用户重新访问应用程序时,她能得到她的数据。
进行这种处理方式最经典的例子是 mail应用程序。如果用户正在输入 email,这时其它 Activity启动了,mail应用程序应该把正在编辑的email以草稿的方式保存起来。
2)不要暴露原始数据
如果你不想穿着内衣在大街上溜达的话,你的数据也不应该这样。尽管可能存在暴露应用程序的某种形式给其它应用程序,但这通常不是最好的主意。暴露原始数据,要求其它应用程序能够理解你的数据的格式;如果你变更了格式,那么,你将破坏那些没有进行同步更新的应用程序。
“Android 方式”是创建一个 ContentProvider,以一种清晰的、深思熟虑的和可维护的API方式暴露你的数据给其它应用程序。使用 ContentProvider,就好像是插入Java接口来分离和组装两片高耦合的代码。这意味着你可以修改数据的内部格式,而不用修改由 ContentProvider暴露的接口,这样,也不会影响其它应用程序。
3)不要打断用户
如果用户正在运行一个应用程序(例如,Phone程序),断定对用户操作的目的才是安全的。这也就是为什么必须避免创建Activity,而是直接在当前的 Activity中响应用户的输入。
那就是说,不要在 BroadcastReceiver或在后台运行的 Service中调用 callActivity()。这么做会中断当前运行的应用程序,并导致用户恼怒。也许更糟糕的是,你的 Activity可能成为“按键强盗”,窃取了用户要提供给前一个 Activity的输入。视乎你的应用程序所做的事情,这可能是个坏消息。
不选择在后台直接创建 Activity UI,取而代之的是,应该使用NotificationManager来设置 Notification。它们会出现在状态栏,并且用户可以在他空闲的时候点击它们,来查看你的应用程序向他显示了什么。(注意,如果你的 Activity已经在前台了,以上将不适用:这时,对于用户的输入,用户期望的是看到下一个 Activity来响应)
4)有太多事情要做?在线程里做
如果你的应用程序需要执行一些昂贵或耗时的计算的话,你应该尽可能地将它挪到线程里。这将阻止向用户显示可怕的“Application Not Responding”对话框,如果不这样做,最终的结果会导致你的应用程序完全终止。
一般情况下,Activity中的所有代码,包括它的 View,都运行在相同的线程里。在这个线程里,还需要处理UI事件。例如,当用户按下一个按键,一个 key-down事件就会添加到 Activity的主线程队列里。事件处理系统需要很快让这个事件出列并得到处理;如果没有,系统数秒后会认为应用程序已经挂起并为用户提供杀死应用程序的机会。
如果有耗时的代码,内联在Activity上运行也就是运行在事件处理线程里,这在很大程度上阻塞了事件处理。这会延迟输入处理,并导致ANR对话框。为了避免这个,把你的计算移到线程里。
5)不要让一个 Activity超负荷
任何值得使用的应用程序都可能有几个不同的屏幕。当设计UI屏幕时,请一定要使用多个Activity对象实例。 依赖于你的开发背景,你可能理解 Activity类似于 Java Applet,它是你应用程序的入口点。然而,那并不精确:Applet子类是一个 Java Applet的单一入口点,而一个Activity应该看作是你的应用程序多个潜在入口点之一。你的“main”Activity和其它之间的唯一不同点是“main”Activity正巧是在AndroidManifest.xml文件中唯一对“android. intent.action.MAIN”动作感兴趣的Activity。 因此,当设计你的应用程序的时候,把你的应用程序看作是Activity对象的集合。从长远来看,这会使得你的代码更加方便维护。
6)扩展系统主题
当谈到 UI观感时,巧妙地交融非常重要。用户在使用与自己期望相反的 UI的应用程序时,会产生不愉快的感觉。当设计你的 UI时,你应该尽量避免太多自己的主题。相反的,使用同一个主题。你可以重写或扩展你需要的主题部分,但至少在与其它应用程序相同的 UI基础上开始。
7)设计你的 UI可以应对多屏幕分辨率
不同的 Android设备可能支持不同的屏幕分辨率。甚至一些可以自己变更分辨率,例如,切换到风景模式。确保你的布局和图片能足够灵活地在不同的设备屏幕上正常显示。幸运的是,这很容易做到。简而言之,你需要做的是为主要分辨率提供不同版本的作品,然后为不同的尺寸设计你的布局。(例如,避免使用硬编码位置而使用相对布局。)如果那样做的话,系统会处理剩下的部分,而且你的应用程序在任何设备上都看起来很棒。
8)假设网络很慢
Android设备会有多种网络连接选项。所有的都提供数据访问,但之间肯定有更快的。其中,速度最慢的是GPRS,GSM网络的非 3G数据服务。即使具备 3G能力的设备在非3G的网络上也会花费很多的时间,所以,网络很慢仍然是一个长期存在的事实。
这就是为什么你应该按照最小化的网络访问和带宽来编写你的代码。你不能假设网络是快速的,所以,你应该总是计划它是慢的。如果你的用户碰巧在一个快速的网络上,那很好——他们的用户体验会提升。你要避免相反的情形:在不同的地点和不同时间,应用程序有时可用,有时慢得令人抓狂,这样的程序可能不会受欢迎。
还有一个潜在的地方是,如果你正在使用模拟器,那么你很容易受它迷糊,因为模拟器使用电脑的网络连接。这比手机网络快很多,所以,你需要修改模拟器设定来模拟较低的网络速度。你可以在 Eclipse中做到这点,在启动选项的模拟器设置页里设置或者在启动模拟器时通过命令行选项设置。
9)不要假定触摸屏或键盘
Android 可以支持多种外观形状。也就是说,一些Android设备拥有全“QWERTY”键盘,而其它可能会有40键、12键或其它键盘设置。同样的,一些设备可能有触摸屏,但一些也会没有。当创建你的应用程序的时候,记住这一点。不要假定特定的键盘布局——除非你真的想限定你的应用程序只运行在某些设备上。
10)节省设备电池
如果移动设备经常插在墙上,那么,它也就不是很“移动”。移动设备是电池供电的,如果我们能让每次充电的电池使用得更持久一些,那么每个人都会更加开心—— 尤其是用户。其中两大耗电硬件是处理器和无线;这也就是我们为什么要写尽可能少做工作、尽可能少去使用网络的应用程序的重要原因。
如何让你的应用程序最小化的占用处理器,归根结底还是要写高效代码。为了减少无线的电量消耗,确保对错误条件进行正确的处理,并只获取你要的东西。例如,如果某一个网络操作失败了,不要不断地进行重试。如果失败了一次,有可能是用户不受欢迎,因此,如果你再以正确的方式操作,有可能还会失败;所有你做的都是在浪费电池。
用户是相当聪明的:如果你的程序高耗电,他们是一定会发现的。到那个时点,你唯一可以确定的是,你的程序将很快被卸载掉。
一个常见的流畅问题是,一个应用程序的后台处理——例如,一个 Service或者BroadcastReceiver——弹出一个对话框来响应一些事件。这可能看起来没啥大碍,尤其是你在模拟器上单独地构建和测试你的应用程序的时候。然而,当你的应用程序运行在真机上时,有可能你的应用程序在没有获得用户焦点时后台处理显示了一个对话框。因此,可能会出现在活跃的应用程序后方显示了你的应用程序的对话框,或者从当前应用程序夺取焦点显示了一个对话框,而不管当前用户正在做什么(例如,正在打电话)。那种行为,对应用程序或用户来说,就不应该出现。
为了避免这些问题,你的应用程序应该使用合适的系统资源来通知用户——Notification类。使用Notification,你的应用程序可以在状态栏显示一个 icon来通知用户已经发生的事情,而不是夺取焦点和打断用户。
另一个流畅问题的例子是未能正确实现Activity的 onPause()和其它生命周期方法而造成意外丢失了状态或用户数据。又或者,如果你的应用程序想暴露数据给其它应用程序使用,你应该通过 ContentProvider来暴露,而不是(举例)通过一个可读的原始文件或数据库来实现。
这些例子的共同点是它们都应该与系统和其它应用程序协作好。Android系统设计时,就把应用程序看作是一堆松散耦合的组件,而不是一堆黑盒代码。作为开发者来说,允许我们把整个系统看作是更大的组件集合。这有益于我们可以与其它应用程序进行清晰无缝的集成,因此,作为回报,我们应该更好的设计我们的代码。
下面将讨论常见的流畅问题以及如何避免它们:
1)别丢弃数据
一定要记住Android是一个移动平台。可以显而易见地说,其它Activity(例如,“Incoming Phone Call”应用程序)可能会在任何时候弹出来遮盖你的Activity,记住这个事实很重要。因为这个过程将触发 onSaveInstanceState()和 onPause()方法,并可能导致你的应用程序被杀死。
如果用户在你的应用程序中正在编辑数据时,其它 Activity出现了,这时,你的应用程序被杀死时可能丢失那些数据。当然了,除非你事先保存了正在进行的工作。“Android方式”是这样做的:能接收和编辑用户输入的 Android应用程序应该重写 onSaveInstanceState()方法,并以恰当的方式保存它们的状态。当用户重新访问应用程序时,她能得到她的数据。
进行这种处理方式最经典的例子是 mail应用程序。如果用户正在输入 email,这时其它 Activity启动了,mail应用程序应该把正在编辑的email以草稿的方式保存起来。
2)不要暴露原始数据
如果你不想穿着内衣在大街上溜达的话,你的数据也不应该这样。尽管可能存在暴露应用程序的某种形式给其它应用程序,但这通常不是最好的主意。暴露原始数据,要求其它应用程序能够理解你的数据的格式;如果你变更了格式,那么,你将破坏那些没有进行同步更新的应用程序。
“Android 方式”是创建一个 ContentProvider,以一种清晰的、深思熟虑的和可维护的API方式暴露你的数据给其它应用程序。使用 ContentProvider,就好像是插入Java接口来分离和组装两片高耦合的代码。这意味着你可以修改数据的内部格式,而不用修改由 ContentProvider暴露的接口,这样,也不会影响其它应用程序。
3)不要打断用户
如果用户正在运行一个应用程序(例如,Phone程序),断定对用户操作的目的才是安全的。这也就是为什么必须避免创建Activity,而是直接在当前的 Activity中响应用户的输入。
那就是说,不要在 BroadcastReceiver或在后台运行的 Service中调用 callActivity()。这么做会中断当前运行的应用程序,并导致用户恼怒。也许更糟糕的是,你的 Activity可能成为“按键强盗”,窃取了用户要提供给前一个 Activity的输入。视乎你的应用程序所做的事情,这可能是个坏消息。
不选择在后台直接创建 Activity UI,取而代之的是,应该使用NotificationManager来设置 Notification。它们会出现在状态栏,并且用户可以在他空闲的时候点击它们,来查看你的应用程序向他显示了什么。(注意,如果你的 Activity已经在前台了,以上将不适用:这时,对于用户的输入,用户期望的是看到下一个 Activity来响应)
4)有太多事情要做?在线程里做
如果你的应用程序需要执行一些昂贵或耗时的计算的话,你应该尽可能地将它挪到线程里。这将阻止向用户显示可怕的“Application Not Responding”对话框,如果不这样做,最终的结果会导致你的应用程序完全终止。
一般情况下,Activity中的所有代码,包括它的 View,都运行在相同的线程里。在这个线程里,还需要处理UI事件。例如,当用户按下一个按键,一个 key-down事件就会添加到 Activity的主线程队列里。事件处理系统需要很快让这个事件出列并得到处理;如果没有,系统数秒后会认为应用程序已经挂起并为用户提供杀死应用程序的机会。
如果有耗时的代码,内联在Activity上运行也就是运行在事件处理线程里,这在很大程度上阻塞了事件处理。这会延迟输入处理,并导致ANR对话框。为了避免这个,把你的计算移到线程里。
5)不要让一个 Activity超负荷
任何值得使用的应用程序都可能有几个不同的屏幕。当设计UI屏幕时,请一定要使用多个Activity对象实例。 依赖于你的开发背景,你可能理解 Activity类似于 Java Applet,它是你应用程序的入口点。然而,那并不精确:Applet子类是一个 Java Applet的单一入口点,而一个Activity应该看作是你的应用程序多个潜在入口点之一。你的“main”Activity和其它之间的唯一不同点是“main”Activity正巧是在AndroidManifest.xml文件中唯一对“android. intent.action.MAIN”动作感兴趣的Activity。 因此,当设计你的应用程序的时候,把你的应用程序看作是Activity对象的集合。从长远来看,这会使得你的代码更加方便维护。
6)扩展系统主题
当谈到 UI观感时,巧妙地交融非常重要。用户在使用与自己期望相反的 UI的应用程序时,会产生不愉快的感觉。当设计你的 UI时,你应该尽量避免太多自己的主题。相反的,使用同一个主题。你可以重写或扩展你需要的主题部分,但至少在与其它应用程序相同的 UI基础上开始。
7)设计你的 UI可以应对多屏幕分辨率
不同的 Android设备可能支持不同的屏幕分辨率。甚至一些可以自己变更分辨率,例如,切换到风景模式。确保你的布局和图片能足够灵活地在不同的设备屏幕上正常显示。幸运的是,这很容易做到。简而言之,你需要做的是为主要分辨率提供不同版本的作品,然后为不同的尺寸设计你的布局。(例如,避免使用硬编码位置而使用相对布局。)如果那样做的话,系统会处理剩下的部分,而且你的应用程序在任何设备上都看起来很棒。
8)假设网络很慢
Android设备会有多种网络连接选项。所有的都提供数据访问,但之间肯定有更快的。其中,速度最慢的是GPRS,GSM网络的非 3G数据服务。即使具备 3G能力的设备在非3G的网络上也会花费很多的时间,所以,网络很慢仍然是一个长期存在的事实。
这就是为什么你应该按照最小化的网络访问和带宽来编写你的代码。你不能假设网络是快速的,所以,你应该总是计划它是慢的。如果你的用户碰巧在一个快速的网络上,那很好——他们的用户体验会提升。你要避免相反的情形:在不同的地点和不同时间,应用程序有时可用,有时慢得令人抓狂,这样的程序可能不会受欢迎。
还有一个潜在的地方是,如果你正在使用模拟器,那么你很容易受它迷糊,因为模拟器使用电脑的网络连接。这比手机网络快很多,所以,你需要修改模拟器设定来模拟较低的网络速度。你可以在 Eclipse中做到这点,在启动选项的模拟器设置页里设置或者在启动模拟器时通过命令行选项设置。
9)不要假定触摸屏或键盘
Android 可以支持多种外观形状。也就是说,一些Android设备拥有全“QWERTY”键盘,而其它可能会有40键、12键或其它键盘设置。同样的,一些设备可能有触摸屏,但一些也会没有。当创建你的应用程序的时候,记住这一点。不要假定特定的键盘布局——除非你真的想限定你的应用程序只运行在某些设备上。
10)节省设备电池
如果移动设备经常插在墙上,那么,它也就不是很“移动”。移动设备是电池供电的,如果我们能让每次充电的电池使用得更持久一些,那么每个人都会更加开心—— 尤其是用户。其中两大耗电硬件是处理器和无线;这也就是我们为什么要写尽可能少做工作、尽可能少去使用网络的应用程序的重要原因。
如何让你的应用程序最小化的占用处理器,归根结底还是要写高效代码。为了减少无线的电量消耗,确保对错误条件进行正确的处理,并只获取你要的东西。例如,如果某一个网络操作失败了,不要不断地进行重试。如果失败了一次,有可能是用户不受欢迎,因此,如果你再以正确的方式操作,有可能还会失败;所有你做的都是在浪费电池。
用户是相当聪明的:如果你的程序高耗电,他们是一定会发现的。到那个时点,你唯一可以确定的是,你的程序将很快被卸载掉。
发表评论
-
android 4.0 取内外置SD卡新特性
2013-06-06 12:44 1115private StorageManager mStorage ... -
android 2.3 取内外置SD卡
2013-06-06 12:42 1883在android2.3中 判断内置SD卡是否挂载: if( ... -
android 关闭数据连接方法
2013-05-04 21:18 1546开关数据连接方法: Method getITelepho ... -
Activity Task Task 栈
2011-12-03 15:30 10621、Activity和Task task就好像是能包含很多a ... -
判断Android 网络状态
2011-12-03 11:53 868当需要开启Activity之前需要检测网络状态的时候需要用到一 ... -
LauncherEx UI初探及Drag机制了解
2011-11-23 10:34 1见下载!! -
Android APK签名
2011-11-23 10:30 13071.签名的意义 为了保证每个应用程序开发商合法ID,防止部 ... -
Android 横竖屏设置
2011-11-17 09:03 1104最近遇到一个问题,关于Android 横竖屏的问题,我的lau ... -
Android_WindowManager分析
2011-11-02 13:53 1Activity 建立一个主窗口 ... -
onInterceptTouchEvent和onTouchEvent调用时序
2011-10-22 17:01 781onInterceptTouchEvent()是ViewGro ... -
activity 启动方式
2011-10-15 11:15 814在android里,有4种activity ... -
Android功能总结:仿照Launcher的Workspace实现左右滑动切换
2011-10-09 17:36 2260对于Launcher的桌面滑动大家应该都比较熟悉了,最好的体验 ... -
Android中的Handler, Looper, MessageQueue和Thread
2011-10-08 20:34 1125前几天,和同事探讨了一下Android中的消息机制,探究了消息 ... -
ListView 动态加载
2011-09-29 20:46 1141ListView的动态加载,想必大家在网上都看过很多资料了。我 ... -
AppWidget加载流程(二)
2011-09-27 17:38 9071. 用户长按Launcher弹出添快捷组件的Dialog,选 ... -
AppWidget加载流程(一)
2011-09-27 17:34 12191. Android系统启动,SystemServer创建A ... -
Android(安卓) snippet
2011-09-21 10:33 01.获取屏幕的分辨率 在 activity 里利用如下编码,宽 ... -
Android 中Locale,auto-rotate状态的获取
2011-09-21 10:26 14461. 得到当前locale: Context.getReso ... -
深入理解Android消息处理系统——Looper、Handler、Thread
2011-09-19 10:56 1033熟悉Windows编程的朋友可能知道Windows程序是消息驱 ... -
理解Android系统的进程间通信原理(一)----RPC中的代理模式
2011-09-14 19:39 1027[size=medium]理解Android系统的进程间通信原 ...
相关推荐
而Android最令人心动之处,莫过于你可以为它编写软件,本书恰好可以为你提供这方面的帮助。 本书读者对象 阅读本书唯一的前提条件,是具备对Java编程或类似面向对象语言(比如说C#)的基本理解,不需要拥有为...
----Android最佳实践之流畅设计 【手机UI设计最佳实践】--------------------------55 ----Android与iPhone应用程序界面布局对比 ----手机客户端UI测试分析 【其他】------------------------------------------64
Android 毕业设计高仿新浪微博客户端,适用于大家课程设计和毕业设计。 一款独立开发的第三方新浪微博客户端,在还原了官方微博的UI的同时,加入更多不同于官方微博的新特性,给用户带来更加流畅,没有广告的体验,...
毕业设计源码 文档:基于Android的音乐播放器的设计与实现,由湖南工业大学计算机与通信学院学生编写开发,制作音乐播放器所用的技术,制作流程和功能介绍。本论文的音乐播放器采用了Android开源系统技术,利用Java...
该记账工具包括记录当天收支情况、计算当天及当月总收支、查看历史账单、每月收支图标和百分比分析、搜索特定记录等功能,界面设计简约美观,操作流畅。适合用于学习和实践Android技术,以及开发个人记账相关的应用...
《计算机毕业设计:基于Android的汽车售票系统》是一项融合了Android开发与现代交通管理技术的创新项目,为广大用户提供了一个便捷、高效的汽车票务管理平台。该资源不仅包含了完整的源码和详细说明,还附赠了专业的...
该源代码采用了现代化的UI设计理念,注重细节与用户体验,为用户提供了流畅、舒适的视频浏览和播放体验。通过精心设计的界面布局和交互逻辑,用户能够方便地浏览各类视频内容,享受高清画质带来的视觉盛宴。同时,源...
通过集成多种动画效果和过渡方式,该应用能够展示Android平台在界面设计上的强大功能和创新性。 在功能实现上,项目首先设计了一系列具有创意和实用性的页面特效,包括滑动切换、渐变淡入淡出、3D旋转等动画效果。...
客户端的设计简洁大方,操作流畅,符合用户的阅读习惯。同时,它还具备离线缓存、推送通知等功能,极大地提升了用户的使用体验。 该资源对于本科课程设计、毕业设计和Android开发学习都具有很高的价值。对于正在...
《AndroidUI基础教程》是一本Android用户界面设计的基础入门图书。全书从最基础的技术概念开始介绍,深入讨论了UI设计的各项技术,涵盖了为应用程序创建UI的所有内容。本书不仅会告诉读者创建灵活布局的最佳方法,...
通过简洁直观的界面设计和流畅的操作体验,为用户提供了丰富多样的图片处理体验。同时,个性化的编辑功能和多样的滤镜特效,让用户能够轻松打造属于自己的创意作品。希望本项目能够为计算机毕业生在相关领域的学习和...
客户端的设计简洁大方,操作流畅,符合用户的阅读习惯。同时,它还具备丰富的API接口、个性化设置等功能,极大地提升了用户的使用体验。 该资源对于本科课程设计、毕业设计和Android开发学习都具有很高的价值。对于...
该资源包含了详尽的论文、完整的源码以及附赠的计算机答辩PPT模板,是本科课程设计、毕业设计以及Android开发学习的理想之选。 在源码方面,该系统采用了先进的Android开发技术,确保了程序的稳定性和流畅性。源码...
同时,项目还注重优化用户体验,通过设计简洁明了的界面和流畅的操作体验,提升用户的游戏感受。 此外,项目还提供了完整的源码,方便其他开发者学习和参考。源码中包含了游戏的核心逻辑、界面设计、事件处理等方面...
本毕业设计项目聚焦于Android屏幕锁源码的开发与实现。通过对Android操作系统的深入研究,我们成功设计并实现了一套高效、安全的屏幕锁机制。该源码能够根据用户设定,在设备待机或超时后自动锁定屏幕,防止未经授权...
系统响应速度快,操作流畅。 系统稳定性高,能够长时间稳定运行。 系统安全性高,能够保证数据的安全性和完整性。 系统易用性好,用户操作简单易懂。 界面设计简洁、美观,符合用户使用习惯。 详细介绍博客:...
一个最有用的android应用程序设计资源列表,如所有材质颜色和尺寸、180渐变背景 html、社交、平面、流畅、Metro颜色。
本课题设计温度测试系统,操作简单,界面简洁,测试结果观测很直接,整个系统运行稳定流畅。本温度测试系统也可用于其他很多行业,应用范围很广泛,非常值得进一步开发与升级。 关键词 智能家居;Arduino;Android...
Android 毕业设计高仿新浪微博客户端,适用于大家课程设计和毕业设计。 一款独立开发的第三方新浪微博客户端,在还原了官方微博的UI的同时,加入更多不同于官方微博的新特性,给用户带来更加流畅,没有广告的体验,...