回 帖 发 新 帖 刷新版面

主题:[原创]Android项目开发范例大全  书连载



Android项目开发范例大全



不通过一些项目上手,咋个能精通Android开发呢?本书这些项目案例的开发方法和流程,值得每一个手机开发者学习和借鉴。



当当地址:http://product.dangdang.com/product.aspx?product_id=22801184



回复列表 (共17个回复)

沙发

第1章  Android基础入门
1.1  在Eclipse中安装Android SDK和ADT
1.1.1  下载和安装JDK
1.1.2  下载和安装Eclipse IDE
1.1.3  下载和安装Android SDK
1.1.4   安装ADT(Android Development Tools)
1.2  Android应用程序架构
1.2.1  创建第一个Android项目
1.2.2  AndroidManifest文件
1.2.3  资源文件夹
1.2.4  R.java
1.2.5  程序的实现原理
1.2.6  Activity生命周期
1.3  Android基本控件
1.3.1  按钮Button
1.3.2  文本框TextView和编辑框EditView
1.3.3  选项RadioGroup和Spinner
1.3.4  开关CheckBox和ToggleButton
1.4  Android布局文件
1.4.1  绝对布局AbsoluteLayout
1.4.2  相对布局RelativeLayout
1.4.3  线性布局LinearLayout
1.4.4  卡片布局FrameLayout
1.4.5  表格布局TableLayout
1.5  页面跳转以及数据在Activity之间的传递
1.5.1  桥梁Intent和容器Bundle
1.5.2  数据的返回——重写onActivityResult
1.6  小试牛刀——模拟用户注册程序
1.6.1  输入界面的实现
1.6.2  注册结果界面的实现
1.7  总结
第2章  《天天向上》—— 桌面小插件与数据库存储的学习
2.1  项目简介
2.2  数据显示ListView
2.2.1  配置ListView布局
2.2.2  ListView数据的初始化
2.2.3  Listview数据的更新
2.3  数据储存SQLiteDatabase
2.3.1  创建数据库和表
2.3.2  数据库增删改查
2.4  对话框
2.4.1  对话框使用
2.4.2  对话框大全
2.5   通知提醒NotificationManager与Service
2.5.1   后台服务Service
2.5.2   Intent兄弟之PendingIntent
2.5.3   创建通知
2.6   桌面小插件APPwidgetProvider
2.6.1   配置appwidget-provider和布局
2.6.2   继承 AppWidgetProvider和添加receiver
2.6.3   数据定时更新与事件响应
2.7   功能实现
2.7.1   数据库设计
2.7.2   设置时间的实现
2.7.3   显示课表的实现
2.7.4   设置上课信息的实现
2.7.5   桌面小插件的实现
2.7.6   定时通知的实现
2.8   应用打包和发布
2.8.1   应用打包
2.8.2   应用发布
2.9  总结
第3章  《NotePad》—— 界面运用与数据处理
3.1  项目简介
3.2  三个常用控件
3.2.1  上下文菜单ContextMenu
3.2.2  选项菜单OptionMenu
3.2.3  进度条ProgressDialog
3.3  Theme与Style
3.3.1  用Theme改变窗体样式
3.3.2  用Style改变控件或Layout样式
3.4  两个Adapter数据适配器
3.4.1  BaseAdapter与列表ListView
3.4.2  CursorAdapter与搜索AutoCompleteTextView
3.5  App参数设置与存储
3.5.1 界面实现与PreferenceActivity
3.5.2  配置数据存储与SharedPreferences
3.6  NotePad功能实现
3.6.1  数据库建立及相关设计
3.6.2  数据适配器及相关设计
3.6.3  界面设计
3.6.4  界面实现
3.6.5  功能实现
3.6.6  桌面小插件
3.7  应用打包与发布
3.7.1  应用打包
3.7.2  应用发布
3.8  总结
第4章  《SpinLock》—— 画图与替代解锁界面的尝试
4.1  项目简介
4.2  画图专用Surfaceview
4.2.1  重写Surfaceview三要点
4.2.2  事件响应
4.2.3  在画布上画图
4.2.4  位置坐标的计算
4.3  屏蔽原有的解锁画面
4.3.1  SystemService的使用
4.3.2  在配置文件中添加Permission
4.4  监听屏幕关闭事件
4.4.1  广播接受者BroadcastReceiver
4.4.2  注册我感兴趣的广播接收器
4.5  功能实现
4.5.1  设置界面
4.5.2  后台服务
4.5.3  主程序
4.5.4  解锁画面的实现
4.5.5  手机震动的实现
4.6  应用打包和发布
4.6.1  打包应用
4.6.2  发布应用
4.7  总结

板凳

第5章  《BlueControl》——蓝牙通信与感应器服务
5.1  项目简介
5.2  蓝牙服务
5.2.1  准备工作
5.2.2  打开蓝牙和搜索蓝牙
5.2.3  建立连接和传输数据
5.3  手势识别
5.3.1  准备工作
5.3.2  gesture的使用
5.4  传感器
5.4.1  感应器的使用
5.4.2  传感器的种类
5.5  功能实现
5.5.1  搜索蓝牙的实现
5.5.2  手机端主界面的实现
5.5.3  赛车游戏手柄功能的实现(一)
5.5.4  赛车游戏手柄功能的实现(二)
3.5.5  水果忍者游戏板的实现
5.5.6  空间鼠标的实现
5.5.7  电脑端的实现
5.6  应用打包与发布
5.6.1  打包应用
5.6.2  发布应用
5.7  总结
第6章  《快速启动》——动态小浮窗
6.1  项目简介
6.2  窗口管理者——WindowManager
6.2.1  让view自己管理自己
6.2.2  参数配置——Type
6.2.3  参数配置——Flag
6.2.4  参数设置——位置
6.3  动态绘图——Surfaceview和Handler
6.3.1  surfaceCreated与surfaceDestroyed之间
6.3.2  图像的变换操作——Matrix
6.3.3  Handler的使用
6.4  九宫格——GridView
6.4.1  在布局文件中配置参数
6.4.2  继承BaseAdapter来显示图片
6.4.3  与其它组建的交互——sendBroadcast
6.5  功能实现
6.5.1  主程序
6.5.2  浮窗的实现
6.5.3  设置界面的实现
6.6  应用打包和发布
6.6.1  应用打包
6.6.2  应用发布
6.7  总结
第7章  《手机终端》——手机自动服务和语音控制
7.1  项目简介
7.2  手机通信自动服务
7.2.1  发送短信和拨打电话——URI
7.2.2  接收短信和接收电话
7.2.3  查找和添加联系人
7.3  手机附加功能自动服务
7.3.1  获取应用及打开
7.3.2  设置闹钟
7.3.3  飞行模式和音量控制
7.3.4  蓝牙和WIFI的开关
7.4  语音输入和输出
7.4.1  语音识别
7.4.2  语音输出
7.5  功能实现
7.5.1  输入效果的实现——SPhone(一)
7.5.2  输出效果的实现——SPhone(二)
7.5.3  解析器的实现——Compiler
7.5.4  联系人和应用管理——SearchManager
7.5.5  语音输入与解析器中间层——SpeakConnect
7.6  应用打包与发布
7.6.1  应用打包
7.6.2  应用发布
7.7  总结
第8章  《Let’s race》——LBS的尝试
8.1  项目简介
8.2  华丽的控件——Gallery和ImageSwitcher
8.2.1  Gallery
8.2.2  ImageSwitcher
8.3  网络通信
8.3.1  手机端
8.3.2  服务器端
8.4  Google Map开发
8.4.1  获取定位
8.4.2  地图显示
8.4.3  其他实用功能
8.5  功能实现
8.5.1  功能、道具设计
8.5.2  注册登录界面
8.5.3  选择界面的实现
8.5.4  游戏界面的实现
8.5.5  排行榜界面的实现
8.6  应用打包与发布
8.6.1  应用打包
8.6.2  应用发布
8.7  总结

3 楼

第7章 《手机终端》——手机自动服务和语音控制
    本章的实例应用是一个用户编程语言项目的一部分。这个项目的目标为使用户可以自己创建自己的代码,实现用户预想的功能(比如说用户想要有一个“翻转静音”的功能,就可以通过交互界面来生产脚本,并最终实现用户预想的功能)。但是由于篇幅的限制,我只能把脚本中的部分功能抽离出来,于是就有了《手机终端》这个应用。
    由于是实现该项目的脚本功能,所以《手机终端》这个应用脱离了图形界面(整个项目只有一个TextView组件用于显示)。本章的重点不在于界面,而在与功能。在本章中,我们将会学习手机的自动服务(如使用代码发送短信、控制音量等)和语音的输入输出。
    7.1  项目简介
    该应用的程序流程如图7-1所示:

[img]http://www.tu265.com/di-f076759eb12f510824f80bf155399186.png[/img]

4 楼

命令解析的过程如图7-2所示:

[img]http://www.tu265.com/di-27b2665452d17757308bfa17ef9dcf7e.png[/img]

程序的效果如图7-3所示:

[img]http://www.tu265.com/di-7e6fd848d079016580912409c0121062.png[/img]

5 楼


大家可以看到程序的界面像极了Windows的Dos界面,是不是有种专业的自豪感油然而生?事实上,除去语音控制和语音输出之外,这个应用的实用性几乎为零,因为几乎没有用户想打电话发短信还要输一大串的命令。我们姑且把这种行为称之为“降低用户体验”。但是这一类的应用也不见得没有市场,极客(geek)们可能会对它感兴趣。
抛开应用的实用性,这个应用包含了许多Android的自动服务,读者通过这一章可以学习到一些手机自动服务以及语音输入输出的知识。
为了在学习之前给读者一个清楚的认识,我在这里把命令以及命令所对应的功能列出来

[img]http://www.tu265.com/di-a1269126253c66ec3a4bb73c9e1cb1e7.png[/img]

6 楼

7.2  手机通信自动服务
    在本节中我们将会学习手机通信(短信和电话)的自动服务,包括查找和添加联系人、接收和发送短信以及接收和拨打电话。这部分内容相对来说比较简单,但是应用范围很广,可以说是学习Android的必修课。
7.2.1  发送短信和拨打电话——URI
    URI是Universal Resource Identifier的缩写,也就是通用资源标志符,它代表要操作的数据,比如联系人信息、文件信息等等。基本上Android的自动服务都会包含URI。下面我会介绍Android中常用的自动操作。
1)    拨打电话
Uri uri = Uri.parse("tel:10086″);
Intent intent = new Intent(Intent.ACTION_CALL, uri);
startActivity(intent);
这块代码的运行效果就是向10086拨打电话,但是需要权限:
<uses-permission android:name="android.permission.CALL_PHONE">
2)    发送短信
Uri uri= Uri.parse("tel:10086″);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtra("sms_body", "我的话费还剩多少?");
intent.setType("vnd.Android-dir/mms-sms"); 
startActivity(intent);
这块代码的运行效果为:给10086发送短信,短信的内容为“我的话费还剩多少”,并且不会询问用户直接发送,而且不会记录在短信对话中,但是也需要权限:
<uses-permission android:name="android.permission.SEND_SMS">
3)    调用拨打电话界面
Uri uri = Uri.parse("tel:10086″);
Intent intent = new Intent(Intent.ACTION_DIAL, uri); 
startActivity(intent);
乍一看这个代码与1)无异,它们的区别是Intent的构造函数的第一个int,此处为Intent.ACTION_DIAL,1)为Intent.ACTION_CALL,且此处不需要任何权限,运行结果如图7-4所示:

[img]http://www.tu265.com/di-72526002b4d330a3f213fd2ae389d124.png[/img]

7 楼

4)    调用发送短信界面
Uri uri = Uri.parse("smsto:10086");   
Intent intent = new Intent(android.content.Intent.ACTION_SENDTO, uri); 
intent.putExtra("sms_body", "我还剩多少话费?"); 
startActivity(intent);
    运行结果如图7-5所示:

[img]http://www.tu265.com/di-bfb058dd9be9a826643431226dfbca5b.png[/img]

8 楼

5)    打开网页
Uri uri = Uri.parse("http://www.google.com/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
startActivity(intent);
    运行结果如图7-6所示:

[img]http://www.tu265.com/di-a39ef6aeec810579b55653f7c556548e.png[/img]

9 楼

6) 打开地图并定位到某个坐标
Uri uri = Uri.parse("geo:25.153275,118.5519617");
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
startActivity(intent);
    运行结果如图7-7所示:

[img]http://www.tu265.com/di-945308201656cea4da095f218ddba33f.png[/img]

10 楼

7) 删除应用
Uri uri = Uri.fromParts("package", "com.shinado.DialogTest", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri); 
startActivity(intent);
Uri.fromParts方法的参数解释:
&#61550;    字符串"package":                固定值,表示包名;
&#61550;    字符串" com.shinado.DialogTest ":  我们要删除的应用的包名。
运行结果如图7-8所示:

[img]http://www.tu265.com/di-110e23ac98a33e23db6f259293ecc80a.png[/img]

我来回复

您尚未登录,请登录后再回复。点此登录或注册