5. 界面布局
几个常用的布局框架
1 LinearLayout: 线性布局
垂直线性布局
android:orientation="vertical"
水平线性布局
android:orientation="horizontal"
控件的位置是相对的。
这是一个特殊的框架,通过继承TabActivity而来,通过多个标签切换,显示不同的内容。首先要了解TabHost,它是一个用来存放多个Tab标签的容器,每一个tab都可以对应自己的布局
1 Shared Preferences
用来存储“key-value pairs”格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型。
特点
不需编写逻辑代码就可以实现程序参数的存储。
存放位置
其实每安装一个应用程序时,在data/data目录下都会产生一个文件夹,如果应用程序使用了Preferences,那么便会在该文件夹下产生一个shared_prefs文件夹,其中就是我们保存的数据。
详细介绍
http://jaymsimusic.iteye.com/blog/773337
2 数据存储之Files
文件可以创建在设备本身或者存储卡上。默认状态下,文件不能在不同程序间共享。用文件来存储数据可以通过openFileOutput方法打开一个(如果这个文件不存在就自动创建这个文件),通过load方法来获取文件中的数据,通过deleteFile方法可以删除一个指定的文件。
3.数据存储之SQLite
前面讲述的几种数据存储方式,都只能存储一些简单的、数据流较小的数据,如果需要对大量数据进行存储、管理以及升级维护,可能就需要随时添加数据、查看数据、更新,这时就要用到SQLite.
Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以创建数据库,对数据进行增、删、改、查。
创建和打开数据库
SQLiteDatabase mSQLiteDatabase = null;
mSQLiteDatabase = SQLiteDatabase.openDatabase("/sdcard/abc.dbs",
null, SQLiteDatabase.CREATE_IF_NECESSARY);
建表、插入、删除、修改
只需编写相应的sql语句,然后执行就可以完成。
如插入一条数据:
mSQLiteDatabase.execSQL(“insert into person(name, age) values(‘小军', 4)");
使用占位符参数(?) 例子如下:
mSQLiteDatabase.execSQL(“insert into person(name, age) values(?,?)”, new Object[]{“小军", 4});
查询
SQLiteDatabase db = ....;
Cursor cursor = db.rawQuery(“select * from person”, null);
If( cursor != null )
{
if (cursor.moveToFirst())
{
do
{
int personid = cursor.getInt(0); //获取第一列的值,第一列的索引从0开始
String name = cursor.getString(1);//获取第二列的值
int age = cursor.getInt(2);//获取第三列的值
}
while(cursor.moveToNext());
}
}
带占位符参数的select语句使用例子如下:
Cursor cursor = db.rawQuery(“select * from person where name like ? and age=?”, new String[]{“%军%", "4"});