七月网

android学习指南(android基础入门教程)

七月网5090

一、安卓开发:Android创建和使用数据库详细指南

1、数据库支持每个应用程序无论大小的生命线,除非你的应用程序只处理简单的数据,那么就需要一个数据库系统存储你的结构化数据,Android使用SQLite数据库,它是一个开源的、支持多操作系统的SQL数据库,在许多领域广泛使用,如Mozilla FireFox就是使用SQLite来存储配置数据的,iPhone也是使用SQLite来存储数据的。

android学习指南(android基础入门教程)

2、在Android中,你为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,数据库位于Android设备/data/data//databases文件夹中,在这篇文章中,你将会学习到如何在Android中创建和使用数据库。

3、使用Eclipse创建一个Android项目,取名为Database,如图1所示:

4、操作数据库的最佳实践是创建一个辅助类,由它封装所有对数据库的复杂访问,对于调用代码而言它是透明的,因此我创建了一个DBAdapter的辅助类,由它创建、打开、关闭和使用SQLite数据库。

5、首先,在src/

文件夹(在这个例子中是src/net.learn2develop.Database)下添加一个DBAdapter.java文件。

6、文件夹(在这个例子中是src/net.learn2develop.Database)下添加一个DBAdapter.java文件。

7、在DBAdapter.java文件中,导入所有你要使用到的命名空间:

8、package net.learn2develop.Databases;

9、import android.content.ContentValues;

10、import android.content.Context;

11、import android.database.Cursor;

12、import android.database.SQLException;

13、import android.database.sqlite.SQLiteDatabase;

14、import android.database.sqlite.SQLiteOpenHelper;

15、接下来创建一个数据库,取名为bookstitles,字段如图2所示。

16、在DBAdapter.java文件中,定义清单1中的常量。

17、清单1定义DBAdapter.java文件中的常量

18、package net.learn2develop.Database;

19、import android.content.ContentValues;

20、import android.content.Context;

21、import android.database.Cursor;

22、import android.database.SQLException;

23、import android.database.sqlite.SQLiteDatabase;

24、import android.database.sqlite.SQLiteOpenHelper;

25、public static final String KEY_ROWID=_id;

26、public static final String KEY_ISBN= isbn;

27、public static final String KEY_TITLE= title;

28、public static final String KEY_PUBLISHER= publisher;

29、private static final String TAG= DBAdapter;

30、private static final String DATABASE_NAME= books;

31、private static final String DATABASE_TABLE= titles;

32、private static final int DATABASE_VERSION= 1;

33、private static final String DATABASE_CREATE=

34、create table titles(_id integer primary key autoincrement,

35、+ isbn text not null, title text not null,

36、private final Context context;

37、DATABASE_CREATE常量包括创建titles表的SQL语句。

38、在DBAdapter类中,你可以扩展SQLiteOpenHelper类,它是一个Android辅助类,主要用于数据库创建和版本管理。实际上,你可以覆盖onCreate()和onUpgrade()方法,如清单2所示。

39、清单2在DBAdapter类中,扩展SQLiteOpenHelper类覆盖onCreate()和 onUpgrade()方法

40、package net.learn2develop.Database;

41、import android.content.ContentValues;

42、import android.content.Context;

43、import android.database.Cursor;

44、import android.database.SQLException;

45、import android.database.sqlite.SQLiteDatabase;

46、import android.database.sqlite.SQLiteOpenHelper;

47、public static final String KEY_ROWID=_id;

48、public static final String KEY_ISBN= isbn;

49、public static final String KEY_TITLE= title;

50、public static final String KEY_PUBLISHER= publisher;

51、private static final String TAG= DBAdapter;

52、private static final String DATABASE_NAME= books;

53、private static final String DATABASE_TABLE= titles;

54、private static final int DATABASE_VERSION= 1;

55、private static final String DATABASE_CREATE=

56、create table titles(_id integer primary key autoincrement,

57、+ isbn text not null, title text not null,

58、private final Context context;

59、private DatabaseHelper DBHelper;

60、DBHelper= new DatabaseHelper(context);

61、private static class DatabaseHelper extends SQLiteOpenHelper

62、DatabaseHelper(Context context)

63、super(context, DATABASE_NAME, null, DATABASE_VERSION);

64、public void onCreate(SQLiteDatabase db)

65、public void onUpgrade(SQLiteDatabase db, int oldVersion,

66、Log.w(TAG, Upgrading database from version+ oldVersion

67、+ newVersion+, which will destroy all old data);

68、db.execSQL("DROP TABLE IF EXISTS titles");

69、onCreate()方法创建一个新的数据库,onUpgrade()方法用于升级数据库,这可以通过检查DATABASE_VERSION常量定义的值来实现,对于onUpgrade()方法而言,只不过是简单地删除表,然后在创建表而已。

70、现在你可以定义不同的方法来打开和关闭数据库,如清单3中的添加/编辑/删除/行的函数。

71、清单3定义打开和关闭数据库以及增加/编辑/删除表中行的方法

72、public DBAdapter open() throws SQLException

73、db= DBHelper.getWritableDatabase();

74、public long insertTitle(String isbn, String title, String publisher)

75、ContentValues initialValues= new ContentValues();

76、initialValues.put(KEY_ISBN, isbn);

77、initialValues.put(KEY_TITLE, title);

78、initialValues.put(KEY_PUBLISHER, publisher);

79、return db.insert(DATABASE_TABLE, null, initialValues);

80、public boolean deleteTitle(long rowId)

81、return db.delete(DATABASE_TABLE, KEY_ROWID+=+ rowId, null)

82、return db.query(DATABASE_TABLE, new String[]{

83、public Cursor getTitle(long rowId) throws SQLException

84、db.query(true, DATABASE_TABLE, new String[]{

85、public boolean updateTitle(long rowId, String isbn,

86、String title, String publisher)

87、ContentValues args= new ContentValues();

88、args.put(KEY_PUBLISHER, publisher);

89、return db.update(DATABASE_TABLE, args,

90、import android.content.ContentValues;

91、import android.content.Context;

92、import android.database.Cursor;

93、import android.database.SQLException;

94、import android.database.sqlite.SQLiteDatabase;

95、import android.database.sqlite.SQLiteOpenHelper;

96、public static final String KEY_ROWID=_id;

97、public static final String KEY_ISBN= isbn;

98、public static final String KEY_TITLE= title;

99、public static final String KEY_PUBLISHER= publisher;

100、private static final String TAG= DBAdapter;

101、private static final String DATABASE_NAME= books;

102、private static final String DATABASE_TABLE= titles;

103、private static final int DATABASE_VERSION= 1;

104、private static final String DATABASE_CREATE=

105、create table titles(_id integer primary key autoincrement,

106、+ isbn text not null, title text not null,

107、private final Context context;

108、private DatabaseHelper DBHelper;

109、DBHelper= new DatabaseHelper(context);

110、private static class DatabaseHelper extends SQLiteOpenHelper

111、DatabaseHelper(Context context)

112、super(context, DATABASE_NAME, null, DATABASE_VERSION);

113、public void onCreate(SQLiteDatabase db)

114、public void onUpgrade(SQLiteDatabase db, int oldVersion,

115、Log.w(TAG, Upgrading database from version+ oldVersion

116、+ newVersion+, which will destroy all old data);

117、db.execSQL("DROP TABLE IF EXISTS titles");

118、public DBAdapter open() throws SQLException

119、db= DBHelper.getWritableDatabase();

120、//---向数据库中插入一个标题---

121、public long insertTitle(String isbn, String title, String publisher)

122、ContentValues initialValues= new ContentValues();

123、initialValues.put(KEY_ISBN, isbn);

124、initialValues.put(KEY_TITLE, title);

125、initialValues.put(KEY_PUBLISHER, publisher);

126、return db.insert(DATABASE_TABLE, null, initialValues);

127、public boolean deleteTitle(long rowId)

128、return db.delete(DATABASE_TABLE, KEY_ROWID+

129、return db.query(DATABASE_TABLE, new String[]{

130、public Cursor getTitle(long rowId) throws SQLException

131、db.query(true, DATABASE_TABLE, new String[]{

132、public boolean updateTitle(long rowId, String isbn,

133、String title, String publisher)

134、ContentValues args= new ContentValues();

135、args.put(KEY_PUBLISHER, publisher);

136、return db.update(DATABASE_TABLE, args,

137、注意Android使用Cursor类返回一个需要的值,Cursor作为一个指针从数据库查询返回结果集,使用Cursor允许Android更有效地管理它们需要的行和列,你使用ContentValues对象存储键/值对,它的put()方法允许你插入不同数据类型的键值。

138、清单4显示了完整的DBAdapter.java源代码。

139、清单4 DBAdapter.java完整源代码

二、学习Android 开发,有什么书籍值得推荐

链接:https://www.zhihu.com/question/21100988/answer/189512051

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

书籍名称:《深入理解Android内核设计思想(第2版)(上下册)》

本书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统、虚拟机等核心技术在Android中的实现原理。书中讲述的知识点大部分来源于工程项目研发,因而具有较强的实用性,希望可以让读者“知其然,更知其所以然”。

本书分为编译篇、系统原理篇、应用原理篇、系统工具篇,共4篇25章,基本涵盖了参与Android开发所需具备的知识,并通过大量图片与实例来引导读者学习,以求尽量在源码分析外为读者提供更易于理解的思维方式。

本书既适合Android系统工程师,也适合于应用开发工程师来阅读,从而提升Android开发能力。读者可以在本书潜移默化的学习过程中更深刻地理解Android系统,并将所学知识自然地应用到实际开发难题的解决中。

点击了解书籍详情:深入理解Android内核设计思想(第2版套装上下册)

书籍名称:《Android Studio应用开发实战详解》

<img src="https://pic3.zhimg.com/v2-99cd2eaba903b7ab670dc915bab24ff2_b.jpg" data-rawwidth="1512" data-rawheight="1928" class="origin_image zh-lightbox-thumb" width="1512" data-original="https://pic3.zhimg.com/v2-99cd2eaba903b7ab670dc915bab24ff2_r.jpg">

全书共分18章,依次讲解了Android开发基础、搭建Android开发环境、Android Studio集成开发环境介绍、Android Studio常见操作、分析Android应用程序文件的组成、Gradle技术基础、UI界面布局、Material Design设计语言、核心组件介绍、Android事件处理、图形图像和动画处理、开发音频/视频应用程序、GPS地图定位、Android传感器应用开发、编写安全的应用程序、Google Now和Android Wear、Android应用优化以及Android TV开发。本书几乎涵盖了Android Studio应用开发所能涉及的所有领域,在讲解每一个知识点时,都遵循了理论联系实际的讲解方式,用具体实例彻底剖析了Android Studio开发的每一个知识点。本书讲解方法通俗易懂,特别有利于初学者学习并消化。

本书适合Android初级读者、Android应用开发人员、Android爱好者、Android Studio开发人员、Android智能家居、Android可穿戴设备研发人员学习,也可以作为相关培训学校和大专院校相关专业的教学用书。

点击了解书籍详情:Android Studio应用开发实战详解

书籍名称:《深入解析Android虚拟机》

<img src="https://pic4.zhimg.com/v2-bc4d2310c32ffb01993ef45d86e08ac3_b.jpg" data-rawwidth="2126" data-rawheight="2457" class="origin_image zh-lightbox-thumb" width="2126" data-original="https://pic4.zhimg.com/v2-bc4d2310c32ffb01993ef45d86e08ac3_r.jpg">

Android系统从诞生到现在的短短几年时间里,凭借其易用性和开发的简洁性,赢得了广大开发者的支持。在整个Android系统中,Dalvik VM一直是贯穿从底层内核到高层应用开发的核心。本书循序渐进地讲解了Android虚拟机系统的基本知识,并剖析了其整个内存系统的进程和运作流程,并对虚拟机系统优化和异常处理的知识进行了详细讲解。

本书几乎涵盖了Dalvik VM系统的所有主要内容,并且讲解方法通俗易懂,特别有利于读者学习并消化。

点击了解书籍详情:深入解析Android虚拟机-图书-异步社区

书籍名称:《Android传感器开发与智能设备案例实战》

<img src="https://pic1.zhimg.com/v2-81001fdede53ef316d4cfa7ed572dca4_b.jpg" data-rawwidth="2126" data-rawheight="2457" class="origin_image zh-lightbox-thumb" width="2126" data-original="https://pic1.zhimg.com/v2-81001fdede53ef316d4cfa7ed572dca4_r.jpg">

本书主要介绍Android传感器和外设的开发,共29章,主要包括Android开发技术基础、获取并编译源码、Android技术核心框架分析、Android传感器系统分析、使用地图定位、光线传感器详解、接近警报传感器详解、磁场传感器详解、加速度传感器详解、方向传感器详解、陀螺仪传感器详解、旋转向量传感器详解、距离传感器详解、气压传感器详解、温度传感器详解、湿度传感器详解、Android蓝牙系统概述、低功耗蓝牙技术详解、语音识别技术详解、手势识别技术详解、NFC近场通信技术详解、拍照解析条形码技术详解、基于图像处理的人脸识别技术详解、行走轨迹记录器、手势音乐播放器和智能家居系统等。

本书几乎涵盖了Android传感器和外设开发所需的所有主要内容,讲解方法通俗易懂。

点击了解书籍详情:Android传感器开发与智能设备案例实战-图书-异步社区

书籍名称:《构建安全的Android App》

<img src="https://pic2.zhimg.com/v2-6bc387810ad8ef061ade6238715dfdd5_b.jpg" data-rawwidth="2362" data-rawheight="2457" class="origin_image zh-lightbox-thumb" width="2362" data-original="https://pic2.zhimg.com/v2-6bc387810ad8ef061ade6238715dfdd5_r.jpg">

本书介绍了主流的Android安全技术开发的方法,并把此方法应用在整个Android应用开发的代码里。书中作者使用详细的例子,从成百上千个他已经亲自审核的应用程序中,帮助读者解读应用程序被攻击的原因,然后演示更安全的解决方案。书中包括身份验证、网络、数据库、服务器攻击、数据、硬件等技术,并阐明了每种技术代码示例的含义和作用,可以帮助读者达到学以致用的目标。

点击了解书籍详情:构建安全的Android App

书籍名称:《Android应用测试指南》

<img src="https://pic2.zhimg.com/v2-3041d4d6f76f37aa8ae3d7ddbfa84fe5_b.jpg" data-rawwidth="2362" data-rawheight="2457" class="origin_image zh-lightbox-thumb" width="2362" data-original="https://pic2.zhimg.com/v2-3041d4d6f76f37aa8ae3d7ddbfa84fe5_r.jpg">

《Android应用测试指南》是一本移动测试实用工具书。本书针对当前流行的技术、框架和工程质量改进工具进行了介绍,一步一步清晰地指导大家如何去写应用程序的测试用例,利用各种测试手段来保证Android项目质量。

本书首先介绍了TTD(Android测试驱动开发)。TTD是软件开发过程中一个敏捷模式,能让你在早期发现应用中的Bug。书中给出了一些典型的样例工程来示范测试,包括最简单的单元测试和最复杂的性能测试。另外,本书以诊断的方式来详细描述Android测试中较广泛、较流行的应用技术。对于梦想在Android测试领域启航的程序员和测试人员来说这无疑是一本非常珍贵、有用的参考书。

点击了解书籍详情:Android应用测试指南-图书-异步社区

书籍名称:《精通Android网络开发》

<img src="https://pic2.zhimg.com/v2-1b88a6176b1bbd1019236989cde6ef71_b.jpg" data-rawwidth="2126" data-rawheight="2457" class="origin_image zh-lightbox-thumb" width="2126" data-original="https://pic2.zhimg.com/v2-1b88a6176b1bbd1019236989cde6ef71_r.jpg">

本书详细介绍了Android网络开发的有关内容,全书共分为5篇,共计25章,从搭建Android开发环境和核心框架分析讲起,依次讲解了Android技术核心框架,网络开发技术基础,HTTP数据通信,URL处理数据,处理XML数据,下载远程数据,上传数据,使用Socket实现数据通信,使用WebKit浏览网页数据,Wi-Fi系统应用,蓝牙系统应用,邮件应用,RSS应用,网络视频处理,网络流量监控,网络RSS阅读器,开发一个邮件系统,在Android中开发移动微博应用、网络防火墙系统,开发Web版的电话本管理系统、移动微信系统等知识。

本书几乎涵盖了Android网络应用中的所有主要内容,讲解方法通俗易懂。

点击了解书籍详情:精通Android网络开发-图书-异步社区

书籍名称:《Java和Android开发学习指南(第2版)》

<img src="https://pic4.zhimg.com/v2-ec797cee5dc2a8ae78b32e52c4b89a8f_b.jpg" data-rawwidth="2126" data-rawheight="2457" class="origin_image zh-lightbox-thumb" width="2126" data-original="https://pic4.zhimg.com/v2-ec797cee5dc2a8ae78b32e52c4b89a8f_r.jpg">

本书是Java语言学习指南,特别针对使用Java进行Android应用程序开发展开了详细介绍。

全书共50章。分为两大部分。第1部分(第1章到第22章)主要介绍Java语言基础知识及其功能特性。第2部分(第23章到第50章)主要介绍如何有效地构建Android应用程序。

本书适合任何想要学习Java语言的读者阅读,特别适合想要成为Android应用程序开发人员的读者学习参考。

点击了解书籍详情:Java和Android开发学习指南(第2版)-图书-异步社区

书籍名称:《Android开发进阶:从小工到专家》

三、Android开发权威指南的图书目录

第1章初识庐山真面目——Android开发简介2

第2章工欲善其事,必先利其器——搭建和使用Android开发环境9

2.1.1开发Android程序都需要些什么9

2.1.2安装JDK和配置Java开发环境10

2.2真实体验——编写第一个Android程序(随机绘制圆饼)15

2.2.2在模拟器中运行Android程序17

2.3迁移Android工程可能发生的错误29

2.4不需要写一行代码的开发工具:AppInventor31

2.4.2AppIntentor的下载和安装31

2.4.3用拖曳控件的方式设计界面33

第3章千里之行始于足下——Android程序设计基础40

3.1.2AndroidManifest.xml文件的结构42

3.3.1Activity(Android的窗体)45

3.3.3Broadcast Receiver(广播接收器)45

3.3.4Content Provider(内容提供者)46

3.4.2ADT自带的可视化UI设计器47

3.4.3使用DroidDraw设计UI布局47

第4章我的UI我做主——用户界面开发基础49

4.1.3显示其他的Activity(Intent与Activity)52

4.3在不同Activity之间传递数据60

4.3.5返回数据到前一个Activity67

4.4.2使用XML布局文件定义视图69

4.5.3相对布局(RelativeLayout)79

4.5.5绝对布局(AbsoluteLayout)82

第5章良好的学习开端——控件(Widget)详解88

5.1.2控件的宽度(android:layout_width)和高度(android:layout_height)88

5.1.3android:layout_margin属性89

5.1.5android:layout_weight属性90

5.1.6android:layout_gravity和android:gravity属性90

5.1.9指定单击事件方法(android:onClick属性)92

5.1.10控件焦点属性(android:focusable和android:focusable-InTouchMode)92

5.2.1显示富文本(URL、不同大小、字体、颜色的文本)93

5.2.2在TextView中显示表情图像和文字97

5.2.7在未显示完的文本后面加省略号(…)111

5.2.8用TextView实现走马灯效果113

5.2.9垂直滚动TextView中的文本114

5.3EditText(编辑文本的控件)115

5.3.2在EditText中输入特定的字符117

5.3.3AutoCompleteText-View(自动完成输入内容的控件)118

5.4.3ImageButton(图像按钮控件)124

5.4.4RadioButton(选项按钮控件)124

5.4.5ToggleButton(开关状态按钮控件)125

5.5ImageView(显示图像的控件)128

5.5.1ImageView控件的基本用法128

5.6.1DatePicker(输入日期的控件)133

5.6.2TimePicker(输入时间的控件)134

5.6.3DatePicker、TimePicker与TextView同步显示日期和时间134

5.6.4AnalogClock和DigitalClock(显示时钟的控件)136

5.7.1ProgressBar(进度条控件)137

5.7.3设置ProgressBar和SeekBar的颜色及背景图140

5.8.1ListView(普通列表控件)145

5.8.2为ListView列表项添加复选框和选项按钮147

5.8.3对列表项进行增、删、改操作149

5.8.5ListActivity(封装ListView的Activity)154

5.8.6ExpandableListView(可扩展的列表控件)155

5.9.1ScrollView(垂直滚动控件)160

5.9.2HorizontalScrollView(水平滚动控件)161

5.9.3可垂直和水平滚动的视图162

5.10ImageSwitcher(图像切换控件)164

第6章友好的菜单——Menu介绍与实例172

6.1.1创建选项菜单(Options Menu)172

6.1.5动态添加、修改和删除选项菜单175

6.1.6带复选框和选项按钮的子菜单176

6.2.3QuickContactBadge与联系人菜单189

第7章友好地互动交流——信息提醒(对话框、Toast与Notification)193

7.1.1带2个按钮(确认/取消)的对话框193

7.1.2带3个按钮(覆盖/忽略/取消)的对话框195

7.1.8使用Activity托管对话框207

7.2.1阻止单击按钮关闭对话框209

7.2.3在对话框按钮和内容文本中插入图像215

7.3.3用PopupWindow模拟Toast提示信息框221

7.4.1在状态栏上显示通知信息222

7.4.2Notification的清除动作224

7.4.3永久存在的Notification225

第8章移动的信息仓库——数据存储228

8.1读写key-value对:SharedPreferences228

8.1.1SharedPreferences的基本用法228

8.1.4设置数据文件的访问权限233

8.1.5可以保存设置的Activity:PreferenceActivity234

8.2.1openFileOutput和openFileInput方法238

8.2.3SAX引擎读取XML文件的原理241

8.2.4将XML文件转换成Java对象242

8.3.2SQLiteOpenHelper类与自动升级数据库251

8.3.3数据绑定与SimpleCursorAdapter类252

8.3.5将数据库与应用程序一起发布256

第9章Android中的窗口——Activity259

9.1调用其他程序中的Activity259

9.1.5向E-mail客户端传递E-mail地址261

9.1.8显示系统设置界面(设置主界面、Wifi设置界面)263

9.3.3Activity之间切换的动画效果269

第10章全局事件——广播(Broadcast)271

10.2.7显示手机电池的当前电量282

第11章跨应用数据源——Content Provider287

11.3.2为Content Provider添加访问权限297

第12章一切为用户服务——Service基础与实例299

12.1.2绑定Activity和Service302

12.1.4判断Service是否已注册306

12.1.5判断Service是否已开始307

12.2.4传递复杂数据的AIDL服务312

第13章做好应用桥梁——网络与通信320

13.1.1用WebView控件浏览网页320

13.1.2用WebView控件装载HTML代码322

13.2.1提交HTTP GET和HTTP POST请求324

13.3.4获得无线路由分配给手机的IP地址334

13.4.2利用Socket在应用程序之间通信340

第14章炫酷你的应用——多媒体开发352

14.2.1使用VideoView播放视频354

14.2.2使用SurfaceView播放视频355

15.1.2在SurfaceView上实现动画效果371

15.4.1AnimationDrawable与帧动画392

16.1.2加速度传感器(Accelerometer)409

16.1.5陀螺仪传感器(Gyroscope)411

16.1.6方向传感器(Orientation)411

16.5.1窗口小部件(AppWidget)425

17.4.2检测浏览器是否支持Canvas449

17.4.3在Web页面中使用Canvas450

第19章Android OpenGL ES开发基础469

20.2左右摇摆的Android机器人482

21.2安装、配置和测试NDK开发环境495

21.2.2下载和安装Android NDK495

21.2.4配置Android NDK的开发环境498

21.3第一个NDK程序:世界你好499

21.3.2用命令行方式编译NDK程序501

21.3.3在Eclipse中集成Android NDK502

21.4背景不断变化的三角形(NDK版OpenGL ES)504

21.5使用NDK OpenGL ES API实现千变万化的3D效果507

21.7本地Activity(Native Activity)511

21.8Android NDK配置文件详解513

21.8.1Android NDK定义的变量513

21.8.2Android NDK定义的函数514

21.8.4配置Application mk文件516

第23章Android综合案例一——蓝牙聊天528

23.4使设备可被其他蓝牙设备发现533

第24章Android综合案例二——月球登陆(游戏)538

第25章Android综合案例三——全键盘输入法(应用)547

25.4根据EditText控件的属性显示不同的软键盘551

第26章Android综合案例四——贪吃蛇(游戏)554

第27章Android综合案例五——新浪微博客户端(应用)561

27.3创建和配置新浪微博客户端工程564

第28章Android综合案例六——笑脸连连看(游戏)577

关于android学习指南,android基础入门教程的介绍到此结束,希望对大家有所帮助。