[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
其他
> 详细
仿迅雷之Anroid版-工程结构
时间:
2014-12-31 02:22:38
阅读:
343
评论:
0
收藏:
0
[点我收藏+]
一般开发的时候,我喜欢想好基本的功能模块,做Anroid一般就是想好有哪些功能,想好需要用到哪些开源的库,想好需要哪些最基本的功能类; 比如文件的操作,Bitmap的操作,Sqlite的操作,UI的自定义,屏幕的基本信息等。 所以一般我会分为下面几个部分(这也是做了几个小项目慢慢积累的一些东西): 同样: 高手可以指点指点,或者飘过~~~ 等项目完成之后我们会项目发布到github上面,写的虽然很烂,但是对于我们这些初学者应该还是可以参考的。
顺便提下,消息推送用的是AndroidPN,参考
http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html
下载
http://sourceforge.net/projects/androidpn/files/
使用都比较简单,看看参考就行:关键是有源码可以修改,这里把点击消息的事件改了下,让点击消息的时候直接进行相应的处理;而不是跳转到一个详细页面,点击OK才触发操作;还有一个问题我将会做修改,就是主界面的应用中心的消息如何推送 - 我打算把服务端的消息推动增加一个功能,App:content的形式进行推送,对于前端收到类似这样的消息,不再进行消息通知,而是通知到启动了的程序,通知程序去更新应用中心消息,并且区分是链接,公告还是其它(这个虽然没开始,但是应该是可以实现的);
说到这,我想起还需要验证一个关于AndroidPN性能的问题,我会做个测试:服务器支持多少客户端的推送 - 我大体会开n个线程做测试;
com.errorvenus.fxunlei
下面有主界面和开机画面,开机画面这里封装了下,主要是开机画面里面开了线程,主要是做一些初始化工作:比如创建文件夹,获取屏幕信息,sqlite.db的拷贝(从assert或者从服务器下载后拷贝到应用程序的data下面 - 这样可以实现用户数据同步),还有启动消息推送的等相关操作。
这里的开机画面被封装成了一个抽象类,提供抽象方法(5s之后跳转):
点击(
此处
)折叠或打开
public
abstract
class
MDSplashActivity
extends
Activity
{
@
Override
protected
void
onCreate
(
Bundle savedInstanceState
)
{
// TODO Auto-generated method stub
super
.
onCreate
(
savedInstanceState
)
;
///< 开机动画
View
view
=
LayoutInflater
.
from
(
this
)
.
inflate
(
setLayoutId
(
)
,
null
)
;
setContentView
(
view
)
;
AlphaAnimation alphaAnimation
=
new
AlphaAnimation
(
1
.
0f
,
0
.
0f
)
;
alphaAnimation
.
setDuration
(
5000
)
;
view
.
startAnimation
(
alphaAnimation
)
;
///< 异步初始化
new
Thread
(
new
Runnable
(
)
{
@
Override
public
void
run
(
)
{
handler
(
)
;
}
}
)
.
start
(
)
;
new
Handler
(
)
.
postDelayed
(
new
Runnable
(
)
{
public
void
run
(
)
{
Intent mainIntent
=
new
Intent
(
MDSplashActivity
.
this
,
setToActivity
(
)
)
;
MDSplashActivity
.
this
.
startActivity
(
mainIntent
)
;
MDSplashActivity
.
this
.
finish
(
)
;
}
}
,
5000
)
;
}
;
/**
* 除显示和跳转外的额外处理
*/
public
abstract
void
handler
(
)
;
/**
* 提供一个要渐隐的view
* @return
*/
public
abstract
int
setLayoutId
(
)
;
/**
* 设置要跳转的Activity.class
* @return
*/
public
abstract
Class
<
?
>
setToActivity
(
)
;
相信应该还是实用的。
com.errorvenus.log
自定义日志类,主要是方便自定义日志的输出,同时,增加崩溃捕获的一个功能,上传到后台服务器,方便查阅;我知道有人喜欢用System.out输出,但是日志多了之后,去挨个删除很费劲。 而且还会漏掉,所以如果自定义的话,就可以把自定义的接口注释掉,这样很容易找到哪些地方打了日志; 日志多了其实会影响性能的。 可能有些用会很好用的日志库,或者说使用像友盟这样的平台。
com.errovenus.listen
虽然这个工程只有一个主界面,但是功能区还是有三四个,左边菜单功能区,自定义标题栏功能区,中间内容功能区,应用中心功能区,我们不可能把所有的监听事件都搞到一个类里面,这样代码太庞大,维护起来很费劲,所以需要单独把事件提出来,每个功能监听处理处理一个功能区。 当前像内容功能区是没有单独的监听处理的,而是放到了Adapter中处理:原因是左边菜单栏的监听处理后的结构是通过内容功能区去显示的,是通过适配器的方式进行的,所以内容的点击处理都是再适配器里面做的。
com.errovenus.adapter
这里面就主要是为菜单栏功能实现做的。主要是正在下载的内容,已经下载的内容,隐私等。所以会有两三个适配器,对应的适配器的”条目“主要在com.errovenus.data中,也就是listview里面显示的”条目“的基本信息;
com.errovenus.core
这里面我把程序文件夹创建的累放在这里了,之后也会把数据库具体数据的操作类从
com.errovenus.data移动到这里;因为core主要是业务核心相关,涉及到具体的业务操作,会放到这里,个人习惯或者规定吧。
像其它的也可以优化,扩展,好的结构可能需要很长的时间去构思。
最后基本的内容结构大体如下 - 后续肯定还会做优化(里面有一些是之前做项目积累下来的一些工具类 MD打头的):
仿迅雷之Anroid版-工程结构
原文:http://blog.chinaunix.net/uid-25799257-id-4724749.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!