❶ android app开发中常用到哪些开源框架
在前面的课程中,随着对Android体系的了解,已经可以进行正常的Android应用开发了。在Android开发中,同其他工程开发一样,也经常使用一些提高效率的框架,本文我们做一个对比。这些框架,既包括:网络请求框架、也包括图片加载库框架、还包括数据库操作等一些框架,总之,了解和熟悉这些框架,会对自己的开发效率有很大的提升和帮助。
网络请求框架
1、okHttp
在前文的学习中,我们已经了解过okHttp,是一个常用的网络加载库。
2、Retrofit
介绍
Retrofit是一个很不错的网络请求库,该库是square开源的另外一个库,之前的okhttp也是该公司开源的。
Retrofit是基于OkHttp封装的RESTful网络请求框架,使用注解的方式配置请求。优点是速度快,使用注解,callback函数返回结果自动包装成java对象。官方自己的介绍说:
A type-safe REST client for Android and Java
该网络框架在github上的地址如下:https://square.github.io/retrofit/
要求
Retrofit支持的http方式方式包括 GET/POST/PUT/DELETE/HEAD/PATCH,Retrofit要求Java的版本是1.8+,Android应用的API版本应该在21+。
依赖
使用Retrofit库,和其他库一样,首先需要设置依赖,依然是在build.gradle文件中设置依赖:
//添加retrofit库依赖
implementation ‘com.squareup.retrofit2:retrofit:2.1.0’
//添加gson转换器
implementation ‘com.squareup.retrofit2:converter-gson:2.1.0’
使用
通过一个例子,我们可以来演示该框架的使用步骤:
1、定义请求接口,即程序中都需要什么请求操作
public interface HttpServices {
/**
获取头条新闻
@param type 新闻类型
@param key apiKey
@return
*/
@GET(“toutiao/index”)
Call getNewsList(@Query(“type”) String type, @Query(“key”) String key);
}
2、实例化Retrofit对象,使用的Builder的模式创建,如下代码所示:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_API)
.addConverterFactory(GsonConverterFactory.create())
.build();
注意,这里设置结构体转换器,是可以直接把网络请求回来的数据转换为Java结构体,这里设置的Gson解析器,因此要引入相应的转换器支持库。
3、得到接口对象,自己创建的全局的接口对象,并调用相应的接口,得到一个类似于请求Call对象。如下所示:
HttpServices httpServices = retrofit.create(HttpServices.class);
Call newsListCall = httpServices.getNewsList(“top”, Constants.API_KEY);
4、加入到请求队列中,并设置回调方法:
newsListCall.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
//网络请求成功的回调方法
List list = Arrays.asList(response.body().result.data);
Log.i(“TAG”, “请求成功:” + String.valueOf(list.size()));
NewListAdapter adapter = new NewListAdapter(RetrofitActivity.this);
adapter.setmData(list);
mRecyclerView.setAdapter(adapter);
}
@Override
public void onFailure(Call call, Throwable throwable) {
//网络请求失败的回调方法
Log.i(“TAG”, “请求失败:” + throwable.getMessage());
}
});
其他界面操作和之前的Android中的内容一致。
3、RxJava
简单来说,用来处理事件和异步任务,在很多语言上都有实现,RxJava是Rx在Java上的实现。
原理
RxJava最基本的原理是基于观察者模式来实现的。通过Obserable和Observer的机制,实现所谓响应式的编程体验。
特点
RxJava在编程中的实现就是一种链式调用,做了哪些操作,谁在前谁在后非常直观,逻辑清晰,代码维护起来非常轻松。
RxJava也是一个在github上的库,githubhttp://www.xingkongmj.com/news/id/62.html地址如下:https://github.com/ReactiveX/RxJava
基于此,还有一个RxAndroid,github地址如下:https://github.com/ReactiveX/RxAndroid
RxJava和RxAndroid的关系
RxAndroid是RxJava的一个针对Android平台的扩展,主要用于 Android 开发。
基本概念
RxJava 有四个基本概念:
Observable:可观察者,即被观察者Observer:观察者subscribe:订阅事件
这四个概念之间的逻辑关系是:Observable和Observer通过subscribe方法实现订阅关系,从而Observable可以在需要的时候发出事件来通知Observer。
事件
RxJava 的事件回调方法主要包含以下几个:
onNext:普通的事件onCompletedhttp://dachang.net/432717.html:事件队列完结。RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新的 onNext 发出时,需要触发 onCompleted 方法作为标志。:事件队列异常。在事件处理过程中出异常时, 会被触发,同时队列自动终止,不再允许再有事件发出。在一个正确运行的事件序列中, onCompleted和 有且只有一个,并且是事件序列中的最后一个。需要注意的是,onCompleted() 和 () 二者也是互斥的,即在队列中调用了其中一个,就不应该再调用另一个。
数据库操作框架
在开发时,本地数据库可以起到缓存数据和存储业务数据的作用,随着技术的成熟,不断推出了有很多关于数据库的操作框架。比较常见的数据库操作框架有诸如:GreenDao,OrmLite 和 ActiveAndroid,DBFlow等。
GreenDAO
GreenDAO是一个开源的 Android ORM(“对象/关系映射”),通过 ORM(称为“对象/关系映射”),在我们数据库开发过程中节省了开发时间!
GreenDao的官方文档地址如下:http://www.xingkongmj.com/news/id/63.html
GreenDao的作用
通过 GreenDao,我们可以更快速的操作数据库,我们可以使用简单的面相对象的API来存储,更新,删除和查询 Java 对象。这款数据库操作框架的特点是:
高性能,在官方的统计数据中,GreenDao在GreenDao,OrmLite 和 ActiveAndroid三个框架中,读、写、更新操作效率均表现第一。易于使用的强大 API,涵盖关系和连接。内存消耗较小。安全:greenDAO 支持 SQLCipherhttp://www.xingkongmj.com/news/id/64.html,以确保用户的数据安全;
核心概念
GreenDao 的核心类有三个:分别是:
DaoMaster:保存数据库对象(SQLiteDatabase)并管理特定模式的 DAO 类(而不是对象)。它有静态方法来创建表或删除它们。它的内部类 OpenHelper 和DevOpenHelper 是 SQLiteOpenHelper 实现,它们在 SQLite 数据库中创建模式。DaoSession:管理特定模式的所有可用 DAO 对象,您可以使用其中一个getter方法获取该对象。DaoSession 还提供了一些通用的持久性方法,如实体的插入,加载,更新,刷新和删除。XXXDao:数据访问对象(DAO)持久存在并查询实体。对于每个实体,greenDAO 生成DAO。它具有比 DaoSession 更多的持久性方法。Entities:可持久化对象。通常, 实体对象代表一个数据库行使用标准 Java 属性(如一个POJO 或 JavaBean )。
使用
按照官方的文档和github上的说明可以实现green的使用。
首先进行的是依赖,对于greenDao,有两个地方需要设置,分别是项目根目录中的 build.gradle,还有mole中的build.gradle。
classpath ‘org.greenrobot:green-gradle-plugin:3.3.0’ // add plugin
在项目根目录中的build.gradle目录中写这句话的意思是添加greenDao的插件。
在项目mole中的build.gradle中也需要进行配置,有两个地方需要设置,如下图所示:
apply plugin: ‘org.greenrobot.greenhttp://www.xingkongmj.com/news/id/66.html’ //开头加入该代码
dependences{
implementation ‘org.greenrobot:green:3.2.0’
}
然后就可以使用了。
bean实体
可以在项目中创建自己业务需要的实体类,并通过注解来设置是实体类,字段约束等内容。然后点击Android Studio中的Make mole,即可自动生成XXXDao代码,以此来方便开发者的操作。生成的XXXDao类,不可修改和编辑,是自动生成的。
ORMLite
ORMLite框架是另外一款Android开发中可以使用的数据库操作框架。该框架的文档地址如下:https://ormlite.com/sqlite_java_android_orm.shtml
该框架的文档准备的不是特别友好,此处不再赘述。
总结,所有的框架原理几乎都相差不大,只是操作有所差异。
视图注入框架
在Android项目开发过程中,有太多的页面需要布局完成,同时在代码中需要些大量的findviewbyid的操作,来实现控件的解析。于是就有人想能否轻松一些,解放双手节省时间,干一些其他有意义的事情,于是ButterKnife就来了。
ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成。
该项目在github上的地址如下:http://www.xingkongmj.com/news/id/65.html
这个框架的优势也非常明显:
强大的View绑定和Click事件处理功能,简化代码,提升开发效率方便的处理Adapter里的ViewHolder绑定问题运行时不会影响APP效率,使用配置方便代码清晰,可读性强
使用
首先是设置依赖,在build.gradlehttp://dachang.net/432714.html中进行依赖设置:
implementation ‘com.jakewharton:butterknife:10.2.1’
annotationProcessor ‘com.jakewharton:butterknife-compiler:10.2.1’
需要注意,该框架要求Java环境1.8版本以上,SDK版本在26以上,因此在使用到的mole中的build.graldle文件中,还必须添加如下代码配置:
apply plugin: ‘com.jakewharton.butterknife’
android{
//…
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//…
}
另外,还必须在项目根目录中的build.gradle文件中,添加该框架的插件,如下图所示:
dependences{
classpath ‘com.jakewharton:butterknife-gradle-plugin:10.2.1’
}
然后即可在代码中进行使用了。
在使用该框架的页面进行绑定诸如,如下所示代码:
ButterKnife.bind( this) ;
主要的功能
@BindView():控件id 注解,解放双手,不用再每个控件都写一遍findviewById@BindViews():多个控件id 的注解,括号内使用花括号包括多个id即可,中间用,分割开在Fragment中使用,绑定Fragment。@BindString():绑定字符串@BindArray:绑定数组@BindBitmap:绑定bitmap资源@OnClick、@OnLongClick:绑定点击事件和长按事件…还有很多
插件安装
如果是页面很复杂,一个一个写BindView也很费劲,在Android Studio中,可以安装一个ButterKnife的插件,安装该插件后,可以在Studio中直接将对应的布局中的所有控件均给自动生成。
注意,在进行自动生成时,鼠标要放在布局文件上。
注意事项
ButterKnife框架在使用时,要求的版本比较高,包括Java的版本也有限制。因此,如果计划在项目中使用,要提前做好预备工作,以防止对已有项目和业务带来不必要的麻烦,反而影响工作进度。
❷ 急!!!基于Android的校园二手市场app,求创意!!
无非界面
商品展示(现在必须带现拍的图片吧,)
聊价钱的方式有条有理,
信息认证(绑定手机号只能绑定唯一学号,确定必须真人),下订单交易时个人信息互相可见
订单处理(别人定下了,就不能被别人定,还要有个交易时间),付款方式,*98
质量问题(退回问题处理,这个有点复杂,可以添加信用记录)
上架(蒲公英啊,等等)
更新
未注册的人也能浏览,评论或下订单,收藏就需要登录
这些功能做好就已经不错了,真的,现在58什么的我都不用了,用的闲鱼
❸ 公司想做一个安卓的APP,做一个大概多少钱
看功能的复杂度来吧, 看需求文档.
作为互联网从业者,被行外朋友们问及最多的问题是“ 做一个网站需要多少钱?” 或者“做一个APP需要多少钱?”。作为做过完整网站项目和APP的人,今天从产品经理的角度,一起来算一下中小型APP从无到有需要做哪些工作,以及为达成使命,需要付出多少金钱。
以下内容的前提是:深圳、移动互联网方向。包含研发一个新产品过程中一些常见的工作,并非十全十美。
首先假设在做APP之前我们已经有了一个成熟的团队(这是非常幸运的前提,很多产品研发进度极其缓慢的原因之一就是在过程中不断在招人),团队的结构以架构师兼后台开发1名 + 安卓1名 + iOS开发1名 + 产品经理1名 + 前端开发1名 + 设计师1名。你可能也发现了这些人员配备都是单点的,一旦有人生病或请假,某个职位就会缺失,项目进度就会拖后,所以我们大约配备2个浮动名额,也就是,初始团队大概有8名,我们假设团队平均工资在13000左右(憋惊讶,深圳需要这个数,还是比较低的…),需要给员工缴纳五险一金,详见下表(假设我们是老实善良的公司,公积金按最低标准缴纳):
除工资的部分,还要平均为每个员工多缴纳 3653元的五险一金支出,员工部分的支出是 (13000+3653)*8=133224元/月。
好,有了团队,下一步要解决的是工作场所的问题,8人团队可以选择创业孵化器(前提是你能找到孵化器)或者中低端的办公场所(这类的办公场所,深圳大约是120元/㎡,大约100平米)。这里有必要稍微提以下孵化器,孵化器的租金会比较便宜(或者不要钱),在接纳创业团队之前一般会签署协议,需要以场地作为股权置换条件,或者是优先投资权,是否划算,得创业团队自己掂量。算上水电、物业,一个月15000左右算比较省了。
有了场地和团队,接下来置换办公耗材、宽带之类的(假设电脑自己带),普通的人体工程学椅子价格在150元左右,如果不买工程学椅子也可以,用普通的椅子,加上桌子平摊成本,桌椅需要200左右的成本,这算一次性付出。拍脑袋,6000元可以搞定吧。
唔,人、场地、作案工具齐活了,开始进入正题吧。
一、产品定位、扯皮、早期工作准备阶段。
做APP之前一般会有个老板,老板大概知道自己想要什么功能(对,老板一般不知道自己要做什么东西,需求是什么,产品定位是什么),这时候产品经理要出马了,跟老板各种扯皮、厘清需求、找产品定位,这里大概扯个两周,好说歹说会把产品的定位、一期的需求想清楚(期间架构师可以开始构思产品的技术架构了,未能正式开工)。
产品定位以及早期的需求确定出来之后,需要想个产品的名字、需求调研、竞品调研分析、注册域名、购置服务器以及周边基础能力(如CDN存储、短信服务、消息推送等)、商标(未注册商标、很多团队就是吃了这个亏)、抢注域名、设计Logo,这里在老板不中途改变想法、变更产品需求和定位的前提下,最起码扯一周,这时候产品的原型、技术架构的雏形也出来了,基本可以进入真刀真枪的干活了。这一步假设域名不需要花大价钱购买,全部费用算起来拍脑袋10000元/年 可以搞定。
二、产品版本策划、架构设计阶段。
看似一切都准备就绪之后,产品开始整理需求,按照需求优先级规划版本。架构师按照产品的发展方向构想,开始着手进入开发环境、生产环境部署、基础代码研发阶段。
很有必要提一下的是,做APP比较常见的两种功能实现方式有Native原生和Webview 方式,这两种方式的优劣不在本文的讨论范围,一般为了保证体验,以原生的方式为主,Webview的方式为辅。以原生的方式做开发,版本是尤为重要的。其一,APP开发完成之后,需要把上架到APP store(假设我们只上iOS和安卓),iOS 的APP Store 有冗长的应用审核周期,你必须提前把往后几个中小版本的功能规划好了才不至于在这个环节自乱阵脚;其二,你的APP安装到用户的手机上时你肯定希望他大部分时候运行的都是最新的版本,如果你的版本更新过于频繁,用户也会烦。
看起来过程似乎非常顺利,产品经理把产品的思路厘清之后,开始准备产品V1.0 的规划。
新产品从无到有常见的工作:
1.产品官网,产品官网是产品、公司、团队的脸面,让用户进入之后能以最快的速度了解你的定位以及产品特性,也就是什么样的人在为解决什么样的问题,做着什么样的事情。
2.用户协议。是的,如果用户要注册、使用你的产品,你得起草你的用户协议,跟律师或法务不断沟通调整。
3.种子用户。嗯,你要思考你的第一批种子用户从哪里来,如何组织,怎么管理,他们是检验你产品的第一群人,对于验证你的产品定位、发现产品问题、提升产品体验来说至关重要。
4.基础数据上报规划。你要知道产品一旦发布,在对用户行为一无所知的情况下,需要收集什么数据来优化、调整你的产品设计,思考你的产品方向。
5.UI设计与交互标准制定。不能保证产品的UI以及交互一上线就有让用户觉得惊艳的效果,但是必须保证UI/交互在一致性上没有问题。
6.后台管理系统。如论是查看数据还是内容管理,后台管理系统是你工作的有效辅助,也不能少。
7.APP。这是你的产品的重中之重,密切观察跟踪。
……
如果一切顺利,那么在3-6个月之后,你的APP第一版应该有了第一个雏形了。
三、内部测试、打磨阶段
在这个阶段,你要跟设计、研发、种子用户之间保持密切沟通,不断收集问题、发现问题、优化、解决问题,期间可能需要发布1-3个beta子版本。同时,你要想办法保持种子用户的活跃与配合的激情,这是一项艰巨的工作,谁做谁知道。
四、发布阶段
发布的时候,不算渠道宣传费用,不打广告,上线iOS APP Store 需要注册开发者账号,购买证书,也需要花费一定的费用,不多,也就99美元/年。
如果你做得多一些,找安全团队帮你做安全评估,这里也要花上一些钱,这里就不算了。至于负载均衡、加速技术什么的,你的APP刚上线,应该用不上。
6个月的时间,算快,一个APP从无到有需要的费用大概这么算:
人工费用: 133224元*6个月 ≈ 80 w。
场地租金: 15000元*6个月 = 9w。
办公耗材+桌椅支出:1w。
服务器、域名、周边IT基础费用:2w。
大约算下来,不算营销费用,第一个版本,你需要准备100w。
是的,当有人问题做一个APP需要多少钱时,你可以回答一个不太复杂的APP,从无到有做出来,半年第一个版本出来,需要100万。
❹ Android 平台有哪些优秀的 Launchers
1.目前桌面是aviate(8.02M),Yahoo Aviate Launcher(com.tul.aviate)_2.6.0.1_Android应用 这个桌面是谷歌前员工组成团队做的桌面,从内测时我就注意到它了,各种发送邮箱等邀请码,当时做得还不是很完善,只有黑白两种背景颜色主题,不是很好看,应用排序做得也不是很好,但和其他桌面不一样的思路让我很期待它成型之后的样子。后来它过了内测,添加了透明主题,那叫一个好看啊!
安装完成进入主界面,算上最左侧选项屏共分五屏,顶栏分为当前情景 当前时间 和应用栏,下方的应用默认是最常用的五个,不过可以自己设置,并且可以继续添加。长按桌面空白部分显示添加小组件,也可以联网选择壁纸。
2.还有一个轻量级桌面叫aim桌面(7.96M),Ami桌面(com.amigo.navi)_1.6.2.b_Android应用,ami桌面最出彩的就是它的每日壁纸和自带图标了,它每日推送一张漂亮的壁纸并附有一句有诗意的文案,并对大量第三方图标进行了重绘,是个很小清新很别具一格的漂亮的桌面。我很喜欢这两项。
并且也有一些功能很不错,壁纸全屏显示,上滑解锁,可以卡片式处理多任务,较强的ios风,可以智能分类图标,可以倒叙排列图标,减少了大屏单手的不便。
3.dodol launcher(11.1M)Dodol Launcher(com.campmobile.launcher)_1.5.6557_Android应用
这个是来自韩国的应用,海量可爱主题是其一大亮点,真的是很漂亮,(但是并没有找到很好看的截图)而且大部分是免费的,就是需要另外下一个phone theme shop。有很多功能较贴心,总之用起来也是比较清爽的。
4.google now launcher(14.94m)Google即时桌面(com.google.android.launcher)_1.1.1.1516623_Android应用
很棒很好用。
5.apex launcher(4.42M)Apex Launcher(com.anddoes.launcher)_3.0.3_Android应用
nova launcher(5.0M)Nova Launcher(com.teslacoilsw.launcher)_#materinova.29_Android应用
adw launcher ex(2.83M)ADWLauncher EX:加强型ADW桌面(org.adwfreak.launcher)_1.3.3.9_Android应用
这几家实力都很强,体积控制的也都很好,完全可以当成原生桌面来用,整体思路差不多,区别在于一些自定义设置上,比之手机自带的touchwiz思路也没有没有差很多,所以就没长时间用过,但是确实是很好的手机桌面。现几家均提供免费版和收费版。
6. tsf shell 桌面(10.45M)TSF桌面:TSF Shell(com.tsf.shell)_3.5_Android应用
这个桌面走的是3d写真炫酷风,拥有多多的小部件,精美但是数量较多,单独桌面下下来并不能开始使用,从时间到日历到天气都相框小部件,全部要下载下来才行,而且又是仿真3d的,所以虽然很炫酷,很是耗电很快,待机时间明显缩水,不过还是很炫酷,可以一试。
7 go launcher ex(10.45M)
应用扩张性很强,但因为前期追求美所以变得较臃肿,后期在变好,集合了很多好工具和主题,很不错。
8.另外,如果你动手能力较强,推荐buzz launcher(6.39M),Buzz Launcher(com.buzzpia.aqua.launcher)_1.7.1.05_Android应用
亮点在其全新设计的新概念,获得德国红点奖的创意设计大奖,拥有来自全球各地朋友制作的100多万免费主题。
9.wp8桌面(9.78M)WP8桌面:LauncherWP8(com.lx.launcher)_3.0.9_Android应用
用多了安卓,没事试试wp,也会有不一样的感觉呀!( ⊙ o ⊙ )!
❺ 大学生,求一个Android的餐饮方面的项目创意,能帮助学习android。
第一件事就是先去找个有wifi的地方,最好你家有无线路由器,如果没有就去星巴克吧,那里速度也比较快。然后就开始在market上下一些日常会用到的软件。输入法,我下的是搜狗输入法,现在用着还行吧,在market搜输入法就行。还在网上找了一个蒙恬输入法,是手写的。下面提到的都可以在market里面搜到。apk installer,如果是自己要装软件不从market下的话,N1上要装的软件需要是apk格式的。其他的,你就在market上看着下吧,不过很多都是英文的,我把自己下了的觉得必须要用的都列一下给你。app manager,管理所有安装的软件。QQ mini,这是其他人开发的QQ版本,腾讯官方还没有出android版本的。安全管家,拦截骚扰电话短信什么的。Gdocs掌上淘宝支付宝ireader,简单的看书软件Documents to go,试用版只有word和excel,其他的要付费购买。大众点评 中国地铁 Places Directory - GPS定位之后告诉你周边的购物,餐饮,住宿咨询Google翻译ES 文件浏览器,这个还不错,很多文件格式都能打开看。我还没研究很透彻,现在都是用来开pdf、ppt格式什么的。以上这些基本是常用的了。至于游戏,你就自己看着下就行。