如果让我重新设计一款App

android-weather-app:这是一款专为安卓平台设计的天气应用。 此应用程序的方法和设计与 Google 的 Android 开发课程一致 安卓天气应用程序 这是一款专为安卓平台设计的天气应用。 此应用程序的方法和设计与 Google 的 Android 开发课程一致。 请报告错误和错误。 立即下载

转载请注明出处:

本文来自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。

从SolidWorks到URDF:插件使用、关节配置与PyBullet仿真避坑指南 本文提供了一份从SolidWorks导出URDF模型并导入PyBullet进行仿真的完整实战指南。详细讲解了SolidWorks插件的正确安装与配置、关节类型的选择与坐标系对齐的核心技巧,并针对PyBullet仿真中常见的模型散架、路径错误、物理属性异常等问题提供了深度避坑解决方案,帮助机器人开发者高效完成从设计到仿真的全流程。 阅读详情

相关推荐

Fluent 2.5D动网格重构实战:涡旋压缩机复杂运动模拟指南

本文详细解析了Fluent 2.5D动网格重构技术在涡旋压缩机复杂运动模拟中的应用。通过对比传统方法,2.5D重构显著提升了计算效率和稳定性,特别适用于柱体类几何的网格处理。文章提供了从基础配置到参数优化的实战指南,包括关键设置步骤、常见问题排查及性能优化策略,帮助工程师有效解决动网格重构中的负体积和网格畸变问题。

weixin_28455801的博客 549

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

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

七小嗨少的博客 1184

VMware 安装 Windows11

一、下载win11的镜像文件 可以在MSDN网站下载: MSDN系统库-致力于原版windows生态服务 二、创建虚拟机 1.双击打开VMware虚拟机,点击创建新的虚拟机 2.选择典型(推荐),然后点击下一步 3.在安装程序光盘映像文件下,点击浏览按钮,选择Windows 11ISO镜像文件所在的路径,在Windows 11安装文件路径中不要有中文或其他特殊符号,否则有可能引起错误。然后点击下一步 4.在选择客户机操作系统界...

m0_56015193的博客 7016

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

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

贝格前端工场的博客 1988

海康威视HiTools实战:5分钟搞定工业镜头选型(附避坑指南)

本文详细解析了海康威视HiTools在工业镜头选型中的应用,通过五步操作流程帮助用户快速匹配适合的镜头型号。文章深入探讨了工业视觉系统的核心参数,包括焦距、视野、景深和畸变控制,并提供了光源搭配和系统集成的实战指南,助力提升机器视觉检测精度与效率。

u0v1w2x3的博客 1056

激光定位算法竞技场:hdl_localization与Cartographer/AMCL的横向技术解剖

本文深入对比了hdl_localization、Cartographer和AMCL三种激光定位算法的技术原理与性能表现。通过UKF-NDT融合、图优化和粒子滤波等核心技术,分析了各算法在结构化环境、动态环境和大尺度场景下的适应性。实验数据表明,Cartographer在全局一致性上表现最优,而AMCL在动态环境中更具鲁棒性。文章还提供了算法选型指南和参数调优技巧,为工程实践提供参考。

weixin_29062865的博客 365

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

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

贝格前端工场的博客 1557

STM32开发实战--解决STM32CubeMX生成代码时钟初始化卡死问题

本文详细分析了STM32CubeMX生成代码在时钟初始化阶段卡死的问题,提供了多种解决方案,包括简单修改和稳健的等待机制。通过深入探讨HAL库的时钟初始化陷阱及硬件层面的根本原因,帮助开发者快速定位并解决STM32开发中的常见问题。

weixin_26965807的博客 439

APP设计模板精选|社交/电商/导航全场景

摘要:本文精选10款专业实用的APP设计模板,涵盖健康监测、交通导航、电商购物、在线教育等高频场景。每款模板针对不同应用场景优化设计,如健康类APP的数据可视化、电商平台的高级感营造、教育产品的清晰交互等。这些模板提供标准化组件和布局方案,帮助设计师快速搭建界面框架,提高工作效率,同时保证视觉美观与用户体验。

2501_92274820的博客 2561

【亲测可用!】阿里达摩院开源实时数字人对话VideoChat本地部署教程(8G显存可跑)

本文主要记录在部署阿里达摩院开源实时数字人对话VideoChat时遇到的问题,希望对各位技术开发或爱好者有所帮助!

波点兔的博客 3891

【Word提效 No.010】使用AI一键复制格式刷应用格式

本文介绍利用AI工具WorkBuddy实现Word文档格式批量复制的自动化解决方案。通过简单指令即可将指定段落的格式一键应用到多个目标段落,解决传统格式刷操作繁琐、易出错的问题。方案包含三步操作:准备文档、输入指令模板、验收效果,并提供多种场景的现成指令示例。该工具支持字体、段落等格式属性的批量复制,且不会覆盖原文件,适用于论文、手册等文档的格式统一需求。

u011186532的专栏 77

移动开发技术作业:设计一个APP基础页面

创建一个简单的app基础页面,APP基础页面包括以下三个内容:首页(3-4个tab页面),列表页面,详情页面。从首页可以点击进入列表页面,点击列表的某一行可以进入详情页面;

2301_81136967的博客 1494

机器人行业面试全攻略:从0到1拿下心仪Offer,看这一篇就够了

【摘要】2026年机器人行业迎来爆发期,全球市场规模超800亿美元,人才争夺激烈。本文针对机器人行业面试提供系统攻略:首先需明确岗位方向、打造差异化标签并了解目标公司;技术面试高频考点包括ROS框架、SLAM导航、运动控制、深度学习和嵌入式系统;项目介绍需采用STAR+R结构并量化成果;行为面试需注意协作能力与职业规划。文章还总结了简历堆砌、单向输出等五大常见误区,强调长期积累与精准准备的重要性,助力求职者把握行业窗口期机会。

郑伟强dev的专栏 187

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

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

Battling against our own ignorance 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

285

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

UI项目整理,APP2.0

感谢云视空团队给予的信任,让我加入这个项目,尤其是沈总,周工等一系列团队的支持,新人第一次发,也是第一次独立完成一个设计,漏洞不足之处肯定很多,请大家多多指点不足之处,谢谢,万分感谢,简单说一下,这次的设计是修改老版本的APP,老版本的APP随着新功能不断的增多,老版本已不能满足需求,所以有了这次重新设计,这次修改是去年12月份的,近时才有时间整理了一下。相关链接已经发布在站酷了,求各位点评多多提...

Oliver尹的博客 498

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

fir.im Weekly - 如果让你重新做一款APP

设想下:如果让你重新做一款 APP ,你会用到哪些开发、设计等资源和工具?本期的 Weekly 为大家分享了最近不错的 APP 开发资源,大部分是关于 iOS 开发、 Android 开发、UI设计相关,大家可各取所需。27个提升效率的iOS开源库推荐作者@Yash Jhunjhunwala 根据自己的喜好选取了一些能够大幅提升开发效率的iOS开源库,包括DZNEmptyDataSet、PDTSim

FIRim的专栏 799

理物集:消费降级以后,我做了这款APP提醒我物尽其用

实用的物品整理APP,帮助我在消费降级以后实现物尽其用,同时有助于我享受简单、有序的生活。

libingxiang01的博客 1948

Axure RP 9交互原型设计软件增加了哪些新功能

Axure RP 9是一款快速原型设计软件,主要用于WEB界面、APP界面、软件界面产品的交互原型设计。是互联网产品经理必备的软件之一,主流科技公司都在用。Axure RP 9是专为UX专业人员和业务分析师设计的专业网站原型设计工具,可以帮助他们快速创建应用程序和网站的线框,原型和规格!Axure RP 9官方介绍Axure RP是一款专业的快速原型设计工具。Axure(发音...

weixin_34166472的博客 922
上一篇: Android搭建本地服务
下一篇: gradle批量签名打包
xb_smart
博客等级 码龄16年 124粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值