如果让我重新设计一款Android App

移动 APP 设计规范:构建高效、易用与美观的用户体验 在移动互联网时代,移动应用程序(APP)成为人们日常生活中的一部分。无论是购物、社交、娱乐,还是工作效率,APP 都是用户与数字世界互动的重要工具。而对于开发者和设计师来说,确保 APP 的设计符合规范,不仅能提升用户体验,还能提高开发效率和维护性。 本文将深入探讨移动 APP 设计规范,从视觉设计、交互设计、功能设计等多个方面展开讨论,帮助开发者和设计师构建高效、易用和美观的 APP。 阅读详情

转载请注明出处:

本文来自aspook的博客:http://blog.youkuaiyun.com/ahence/article/details/47154419


开发工具的选择

开发工具我将选用Android Studio,它是Google官方指定的Android开发工具,目前是1.2.2稳定版,1.3的预览版也已经发布了。Android Studio的优点就不需多说了,GitHub上大部分的Android开源库也都已迁移到Android Studio上来,在未提供jar文件时,使用Android Studio可以极为方便地集成开源库。最为重要的是Google已宣布将在年底前停止对Eclipse Android开发工具的一切支持(Google Ends Support for Android Eclipse Tools),因此请早日转移到Android Studio上来。


App设计风格

这一点对于一个开发者来说,貌似没有决定权,最终的决定权在产品部门手里。尽管这样,我还是会尽力说服产品部门将App设计成Material Design风格。这一点说多了都是泪啊,作为一个Android开发者,却整天开发着iOS风格的App,相信很多公司都这样,为了节省成本和时间,Android和iOS共用一套UI。举一个最常见的例子,Android App中每个页面TitleBar的左上角放一个返回按钮,这在iOS里是必须的,但Android有返回键啊,这样设计对于Android完全是多此一举。真心希望产品设计者尊重每种操作系统的风格及使用习惯,不要再设计不伦不类的产品。Material Design正好提供了一种这样的规范,自MD规范发布以来,其优雅的设计和清新的风格已吸引了大批设计者和开发者,如今MD设计不止在Android上(已有官方类库支持MD风格),甚至在CSS、HTML、JavaScript网页设计上都越来越火。因此,对于App的设计风格,Material Design当仁不让,也许你曾经错过了Android Design,请不要再错过Material Design。


一些相关的链接:

Material Design官网

Material Design配色模板

MD一个设计案例网站

MD风格的Andorid抽屉源码:Android-MaterialDesign-NavigationDrawer

MD风格的一个App源码(有妹子哦):Android-MaterialDesign-DBMZ


版本支持

对于Android要支持的最低版本,可以参考各个版本的市场占有率,其实最靠谱的是根据自家App的统计数据来决定,目前我们的App最低支持2.2。以个人观点认为,虽然2.x的版本仍然有一部分用户,但其实手机更新换代特别快,为了更好的用户体验,也为了应用更新的API(很多第三方库也都有版本要求),应该提高最低支持的版本,大概3.0为宜,即API Level为11。


App框架设计

相信大家都有体会,随着功能模块的增加,App越来越大,如果没有良好的架构设计,则代码将会变得臃肿且不易维护,各功能模块的耦合度会越来越高。因此可以把App模块化,将一个完整的App划分成几个相对独立的模块,这样即可以降低模块间的耦合也利于复用。


1.网络模块

已经很少有单机版的App了吧,大部分都需要联网,从服务器请求数据,因此网络模模块必不可少。GitHub上的开源网络框架也特别多,个人认为可以使用开源框架,目前我会选okHttp或者Volley,也许以后会有更好的网络框架出现。注意如果使用开源框架,则必须要阅读其源码,必须能够驾驭它,这样就不至于当bug出现时束手无策。当然还可以自己写网络模块,目前我们的App网络模块就完全是自己写的,这样的好处是自己熟悉所写的代码,当有bug时可以迅速定位问题,同时注意处理一些联网过程中的细节,如:

(1)对HTTPS的支持、HTTPS证书的验证(目前很多做法都是默认允许所有HTTPS证书的,其实这样做是不安全的,应当真正地做证书校验)

(2)支持Wap方式上网,移动、联通、电信代理的设置

(3)支持重定向、数据压缩传输等

(4)其他值得注意的问题

自己写网络框架可以完美地处理这些细节,但时间成本比较大。如果使用开源框架,一般都没有处理这些细节,因此我们可以在第三方框架上做些修改,这样时间成本将会节省很多。


2.图片管理模块

图片也是App中不可少的元素,而且图片是占用内存的大户,因此图片管理框架特别重要,不好的图片框架容易引起内存泄露甚至导致崩溃。当然可以自己实现图片框架(目前我们也是这样做的),实现图片的下载、解码、缓存等关键环节。个人建议可以采用一些比较好的图片库,也许会比我们自己管理图片更完善和高效。我会推荐如下几个图片管理库:

(1)Glide,Google的一些官方App,如Google photos都使用了,还要解释更多吗?

(2)Fresco,FaceBook的开源库,功能超级强大,支持WebP、Gif、JPEG渐进显示,关键是其对图片内存的设计思想,使得图片内存开销大大减少。

(3)Android-Universal-Image-Loader,在出现上述图片库之前,貌似这个最火吧,之前个人的App中也用了它。

(4)Picasso,Square的开源库,据说Glide就是参考Picasso设计的。


3.本地数据库模块

也许你的App需要用到本地数据库,那么建议你采用流行的ORM框架,如ActiveAndroid或greenDAO,使用第三方库会大大方便你对sqlite的操作,个人认为在使用中我们需要注意数据库升级以及多线程并发操作数据库的问题。


4.文件管理模块

一个App,肯定会涉及到一些文件,如配置文件、图片、视频、音频、SharedPreferences文件等。我们可以提供一个全局的文件管理模块,负责文件的增、删、改、查等操作。另外还需支持文件压缩,文件的上传与下载操作,对于下载需要支持多线程并发下载、断点续传等功能。


5.组件内、组件间通信机制

对于一个App,组件通信必不可少,通信类型可以分为点对点和点对面的的通信,点对点即只有唯一的接收者可以响应消息,点对面则类似于消息广播,即所有注册过的都可以响应消息。在Android中,通常使用消息机制来实现,但消息机制的耦合度比较高。目前也有一些通信框架,如EventBus、Otto等事件总线框架,这些框架可以极大地降低组件间的耦合,但无法完美地实现点对点通信,因此建议消息机制和事件总线机制结合使用。


6.数据处理框架

其实还应该有一个数据处理框架,当发出数据请求后(走子线程),经网络模块返回数据(一般为JSON格式),JSON数据一般不能直接交给View层使用,需要解析成对应的Model,同时如有需要,还要缓存数据,因此这些流程可以抽象成一个数据处理的框架。这个框架可以认为接受数据请求的url,并将数据Model返回给Activity或Fragment。对于JSON数据解析,建议使用fastjson,速度快且稳定,缺省值也比较完善。


7.线程调度模块

其实Android中有很多操作,如请求数据、下载图片、清除缓存等都是需要在子线程中执行的,往往很多时候都是直接起一个Thread来做了,这样做就会很乱而且线程多了将难以管理。因此可以抽象出一个线程调度模块,它维护一个线程池,如果有需要线程的话就通过线程调度模块取线程来做,这样就方便统一管理。当然第三方库中的线程操作我们将无法归到线程调度模块来管理,但其他涉及到线程的操作都应该来统一处理。


8.业务层

业务层大概就是四大组件、Fragment、View了,建议尽可能地使用原生组件,少用自定义组件,因为原生组件性能是最好的。另外建议使用MVC模式就好,只要设计管理好自己的逻辑,至于MVP、MVVM等模式个人认为都有缺陷,总之寻求一个折中吧,有得必有失。


9.APK动态加载机制

随着App的增大,功能的扩展,很多App已经采用了APK动态加载的机制,也可以叫做插件化。由于本人没有在实际的App中应用过,所以不便发表过多评论。但这种机制个人认为很有前途,这种机制将利于App的解耦、功能扩展和局部升级。具体可以参考一个商用的解决方案:ApkPlug-移动应用模块化解决方案和一个开源的APK动态加载框架。


10.App的安全性考虑

Android App的安全问题很少有人重视,但这的确是一个很严重的问题,一些好的App经常被人破解。建议将一些核心算法等写成.so库,重要的逻辑放在服务器端,数据请求采用加密等,另外打包APK时至少要混淆代码,还可以采用APK加壳机制,总之这类的防范措施永远不嫌多。

一口气漫无逻辑地写了这么多,可能会有遗漏的内容,后续会补充完善。我想如果按照上述原则,至少可以开发出一款不错的App。

安卓APP源码和设计报告——体重档案APP(含答辩PPT) 项目背景胖是历来已久的一种多因素引起的代谢障碍疾病。早在1948年,世界卫生组织已将“肥胖”列入疾病名单。随着全球经济的快速发展,移动互联网的兴起、人民生活水平的提高,加上不合理的膳食结构、不良生活方式等出现,肥胖已成为公共卫生焦点问题。随着人们对肥胖危害的认知度提高,减重的治疗方法也在历久弥新,健康生活,控制体重已日益成为人们所重视的问题。与此同时,大众审美观念的趋势也促使了人们对自身体重的高度重视。 阅读详情

相关推荐

贴心日程app

设计了一个美观、简单的日程记录软件,可以记录日程时间、主题、紧急情况。用户可以进行增删改查

APP界面设计案例大揭秘,文末附赠模板!

如何保证你的app界面设计在拥挤的安卓市场中脱颖而出呢?即时设计将为您介绍一些安卓app界面设计的设计技巧,为您设计排名第一的安卓app界面设计!

七小嗨少的博客 1184

OpenClaw本地部署教程

本文详细介绍了在Windows 11系统上部署OpenClaw与Ollama本地模型的完整流程。主要内容包括:硬件要求说明、Node.js环境配置、Ollama模型安装与定制(重点扩展上下文窗口至32768 tokens)、OpenClaw核心框架安装与对接、常见问题解决(如模型上下文窗口过小报错)以及可选技能扩展和飞书接入方案。部署全程约需1-2小时,强调使用备用设备或虚拟机以确保安全,并提供关键配置参数和排错命令。该方案实现了"数据不出门、推理本地化"的私有化部署目标。

技术引领业务创新 2576

人类高质量appui设计,这些细节之处才能征服用户

例如,微信的各种功能图标,如朋友圈的相机图标、扫一扫的二维码图标等,都具有极高的辨识度,用户能够快速理解其功能并进行操作。除了主色调的选择,色彩的对比度和协调性也至关重要。例如,在一款美食类 App 中,以暖色调为主,橙色的美食图片搭配浅黄色的背景,再辅以少量绿色的装饰元素,既突出了美食的诱人色泽,又营造出温馨舒适的用餐氛围,让用户在浏览 App 时仿佛置身于美食的世界中。只有关注这些细节,不断优化和完善 App 的 UI 设计,才能打造出令用户满意的产品,在激烈的市场竞争中脱颖而出,真正征服用户的心。

贝格前端工场的博客 1988

四轮两驱小车(四):STM32驱动5路灰度传感器PID循迹

之前买了一批5路灰度传感器,想用这传感器进行循迹,无奈网上和官方的资料提供的还是比较少,这里还是做一下当初的学习记录。

weixin_51651698的博客 6万+

C语言|深入浅出讲解int转换为float全过程(附2017年统考大题案例)

int转换为float类型为什么会发生精度损失? 精度损失的详细过程究竟是什么样的? 什么样情况float会发生精度损失?没有弄懂2017年浮点数统考大题? 这一篇用2017年统考大题案例帮你更深的理解浮点数的存储规则。

DADONGOOO的博客 1万+

看了这些APP设计技巧,你的界面会变得完全不一样!

在竞争激烈的移动应用开发领域,APP 界面设计是决定其成败的关键因素。设计精良的界面不仅能提升用户体验,还能增强用户参与度与忠诚度。运用一些关键设计技巧,APP 设计者能够将普通界面转变为非凡之作。以下是一些能带来显著改变的重要设计技巧。

贝格前端工场的博客 1557

wxComboBox类的使用方法及示例代码

其中,parent表示该控件的父窗口,ID_COMBOBOX是该控件的ID,用于在事件处理函数中区分不同的控件,"默认选项"是下拉列表框的默认选项,options是wxArrayString类型的数组,用于存储下拉列表框中的选项,style可以指定wxComboBox的样式。wxComboBox是wxWidgets中的一个常用控件,它可以被用来显示一组在下拉列表框中的选项,并允许用户从中选择一个选项。上述就是wxComboBox类的基本使用方法,使用这个控件可以方便地实现下拉列表框的功能。

学习使你进步。 712

5 个 APP 设计细节,决定你的产品是平庸还是惊艳

性能优化可以从多个角度入手,首先是代码层面的优化,比如压缩CSS、JavaScript文件,去除无用代码,以及采用懒加载技术来延迟非关键资源的加载。一个典型的例子是按钮按下时的视觉反馈——当用户点击或触摸某个按钮时,该按钮会给出相应的动画反应,告知用户操作已被接收。在设计微交互时,需特别注意保持一致性,确保所有交互元素的行为符合用户的预期,并且遵循平台的设计规范。为了保证最佳的用户体验,设计师还需要考虑无障碍设计原则,比如为色盲用户提供足够的对比度,以及为视障用户提供易于识别的文字大小和样式。

贝格前端工场的博客 766

使用ESP32设计嵌入式蓝牙游戏手柄

通过使用ESP32开发板和相关的库,我们可以设计和实现嵌入式蓝牙游戏手柄。连接到该设备后,您可以使用控制器模块的按钮和摇杆等元件来模拟游戏手柄的输入。根据您使用的具体模块和引脚分配,连接按钮和摇杆等控制元件到ESP32的GPIO引脚。ESP32是一款功能强大的微控制器,集成了Wi-Fi和蓝牙功能,非常适合用于开发物联网和嵌入式应用。请注意,本文仅提供了一个基于ESP32的嵌入式蓝牙游戏手柄设计示例,具体实现可能因硬件和需求而有所不同。确保开发板正确连接到计算机,并选择正确的开发板和端口。

CodeMaven的博客 1642

Xilinx FPGA平台DDR3设计保姆式教程(3)MIG IP核使用教程及DDR读写时序

干货来了,用DDR搬砖,只需要会用IP就好,Xilinx官方YYDS! ----------------------------------------------------------------------------------------------------------------- 汇总篇: Xilinx平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了 ----------------------------------------------------------...

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2万+

重新设计一款Android App,我会怎么做?

关注微信号:javalearns   随时随地学Java 或扫一扫 随时随地学Java 开发工具的选择 开发工具我将选用 Android Studio,它是Google官方指定的Android开发工具,目前是1.2.2稳定版,1.3的预览版也已经发布了。 Android Studio的优点就不需多说了,GitHub上大部分的Android

285

HLA分型

HLA分型 一、根据WES的tumor数据进行数据分型 选用hlahd 软件安装及使用 [root@18605fd8771e ~]# wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip [root@18605fd8771e ~]# unzip bowtie2-2.4.1-linux-x86_64.zip && mv bowtie2-2.4.1

qq_23435961的博客 2487

android带投屏播放器,投屏播放器app下载

投屏播放器APP是一款简单好用的投屏工具,界面简洁操作简单,一键即可搜索附近可投屏的电视并进行智能投放设置,不论是电视电影还是歌曲都可以进行投放哦,有需要的用户赶紧来下载吧!应用介绍当手机、平板等移动设备和电视、盒子在同一无线网络环境时,你可以轻松的把手机中的照片、视频投射到电视、盒子上,可以实现将移动设备的内容无线投送到大屏终端,达到手机操控电视看电影、听音乐、分享照片等,适合开会办公、视频推送...

weixin_30325819的博客 1239

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

221

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

如果让我重新设计一款App

转载请注明出处: 本文来自aspook的博客:http://blog.youkuaiyun.com/ahence/article/details/47154419 开发工具的选择 开发工具我将选用Android Studio,它是Google官方指定的Android开发工具,目前是1.2.2稳定版,1.3的预览版也已经发布了。Android Studio的优点就不需多说了,GitHub上大部

hpb21的专栏 1321

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

(课程设计)基于Android的订餐app 毕业设计-附源码190711

台采用java语言、springboot框架,它是应用mysql数据库、Android等技术动态编程以及数据库进行努力学习和大量实践,并运用到了APP的建设中在整个系统的设计当中,具体根据网上订餐app的现状来进行开发的,具体根据用户需求实现网上订餐app网络化的管理,各类信息有序地进行存储,进入订餐app页面之后,方可开始操作主控界面,系统功能包括管理员服务端:首页、轮播图、公告栏、管理员、美食资讯、资讯分类、外卖商城列表、分类列表、订单列表、店铺展示、卖家、店铺分类、城市管理、订单配送、菜品收入、等功能

ID3461074420的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

安卓app软件开发的费用

安卓和苹果APP软件应用的复杂性,第二个是定制开发的APP软件,开发成本和人员的投入成本,以下就是不同的报价费用是怎么来的。公司开发一个安卓APP软件,只要实现的功能能正常的操作,不需要考虑太多的复杂界面和功能的交互效果,这种类型的安卓软件属于一个基本的程序员开发就能搞定的,运用市场上的软件模板进行开发,报价一般在2万元左右。定制一款领域软件安卓APP客户端,企业需要投入的资金会是一个持续的过程,因为安卓的开发需要不断的重新设计,开发测试,不断的更新,长时间的打磨和结合用户的喜好进行更新的产品。

尚合维宝 1430
上一篇: TextView 的 XML 属性及相关方法的说明
下一篇: Android WebView 与JS的数据交互
KeenSpace
博客等级 码龄12年 4粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值