当前位置: 代码迷 >> Android >> Android基础知识【项目实训】【二】
  详细解决方案

Android基础知识【项目实训】【二】

热度:72   发布时间:2016-04-28 03:10:45.0
Android基础知识【项目实训】【2】
【该项目实训是Android基础知识的一个综合练习,特别提示:项目中会用到一些图片素材,都是随意整理的,稍后会上传一个资源,包含该事项项目的基本功能,也含有图片素材
【项目题目】:校园订餐App设计
综合案例
【目标】
因为项目只涉及基础知识,因此项目中所用数据并不联网,都读取单机数据库。(即将该项目中所用数据,如菜品信息、店铺信息等存入数据库)用户在第一次打开该项目时,会在用户手机上创建这些数据库,并插入测试数据。
1、先制作一个欢迎界面,欢迎的同时,准备数据库
欢迎界面Activity对应的类是FlashActivity,代码如下:
public class FlashActivity extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		requestWindowFeature(Window.FEATURE_NO_TITLE);		//getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);		setContentView(R.layout.activity_flash);		new Handler().postDelayed(new Runnable(){			@Override			public void run() {				initDb();//	初始化数据库				Intent intent=new Intent(FlashActivity.this,MainActivity.class);				startActivity(intent);				FlashActivity.this.finish();			}}, 3500);	}	public void initDb(){		EatDbHelper dbh=new EatDbHelper(this,"fooddb.db3",null,1);		dbh.getReadableDatabase();	}}
对应的布局文件是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".FlashActivity" >    <ImageView        android:id="@+id/imageView1"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:src="@drawable/welcome" />	<TextView 	    android:layout_width="match_parent"	    android:layout_height="wrap_content"	    android:gravity="right"	    android:text="欢迎使用百米购 V1.0"	    android:layout_alignParentBottom="true"	    android:textSize="12sp"	    /></RelativeLayout>
2、上面的Activity用到 EatDbHelper类,这是一个操作SQLite数据库的帮助类,下面是代码
/** * 创建数据库的帮助类 * @author Administrator * */public class EatDbHelper extends SQLiteOpenHelper {	private EatDbHelper dbHelper;	public EatDbHelper(Context context, String name, CursorFactory factory,			int version) {		super(context, name, factory, version);	}	public EatDbHelper getInstance(){		if(dbHelper!=null) return dbHelper;		dbHelper =this;		return dbHelper;	}	@Override	public void onCreate(SQLiteDatabase db) {		//创建必须表		db.execSQL(DbTables.tb_account);	//订单表		db.execSQL(DbTables.tb_accountItem);	//订单项表		db.execSQL(DbTables.tb_comment);	//评价表		db.execSQL(DbTables.tb_foodInfo);	//食品表		db.execSQL(DbTables.tb_shopInfo);	//店铺表		db.execSQL(DbTables.tb_userInfo);	//用户信息表		Log.i("Msg", "创建数据库、 表完成");		//插入数据		for (String sql:DbTables.userDb) {			db.execSQL(sql);		}		for (String sql:DbTables.shopDb) {			db.execSQL(sql);		}		for (String sql:DbTables.foodDb) {			db.execSQL(sql);		}		Log.i("Msg", "插入测试数据完成");			}	@Override	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {	}}
3、因为需要创建多张表,插入多条测试数据,所用单独为这些Sql语句准备了一个静态类,方便引用(这是非正常做法)
DbTables这个类中,准备了改项目用到的创建表格Sql语句和插入数据的Sql语句
public class DbTables {	public static String tb_foodInfo="create table tb_foodInfo(" +			"_id integer primary key autoincrement," +			"foodName varchar,price varchar,isPromotion varchar,discount varchar," +			"category varchar,type varchar,score varchar,shopId integer," +			"imgId varchar,des varchar" +			")";		public static String tb_shopInfo="create table tb_shopInfo(" +			"_id integer primary key autoincrement," +			"shopName varchar, phone varchar,address varchar," +			"score varchar,type varchar,imgId varchar" +			")";	public static String tb_userInfo="create table tb_userInfo(" +			"_id integer primary key autoincrement," +			"username varchar,loginName varchar,loginpwd varchar," +			"phone varchar, address varchar,sex varchar,birthday date," +			"score float, userImage varchar" +			")";	public static String tb_comment="create table tb_comment(" +			"_id integer primary key autoincrement," +			"userid integer,foodId integer , message varchar,state varchar" +			")";	public static String tb_accountItem="create table tb_accountItem(" +			"_id integer primary key autoincrement," +			"accountId integer,foodid integer, count integer" +			")";	public static String tb_account="create table tb_account(" +			"_id integer primary key autoincrement," +			"userid integer,state integer, createDate date" +			")";	public static List<String>userDb=new ArrayList<String>();	public static List<String>shopDb=new ArrayList<String>();	public static List<String>foodDb=new ArrayList<String>();		static{		userDb.add("insert into tb_userInfo(userName,loginName,loginpwd,phone,address," +				"sex,birthday,score,userImage) " +				"values('曹操','caocao','caocao','13012345500'," +				"'师范大学一区25栋10-11','男','1995-10-11','100','0x7f020014')");				shopDb.add("insert into tb_shopInfo(shopName,phone,address,score,type,imgId)" +				" values('小张快餐','15566881230','师大西门小吃街','100','1','0x7f020016')");		shopDb.add("insert into tb_shopInfo(shopName,phone,address,score,type,imgId)" +				" values('加州面馆','1851357788','师大西门小吃街','500','1','0x7f020016')");		shopDb.add("insert into tb_shopInfo(shopName,phone,address,score,type,imgId)" +				" values('大饼夹一切','13051350011','师大西门小吃街','20','1','0x7f020016')");				foodDb.add("insert into tb_foodInfo(foodName,isPromotion,discount,category," +				"type,score,shopid,imgId,price)" +				"values('水果披萨','0','1','西餐','甜香','100','1','0x7f020005','26.00')");		foodDb.add("insert into tb_foodInfo(foodName,isPromotion,discount,category," +				"type,score,shopid,imgId,price)" +				"values('红豆汤圆','0','1','中餐','甜香','100','1','0x7f020006','12.50')");		foodDb.add("insert into tb_foodInfo(foodName,isPromotion,discount,category," +				"type,score,shopid,imgId,price)" +				"values('蔬菜汉堡','1','0.8','西餐','微甜','10','1','0x7f020007','6.00')");		foodDb.add("insert into tb_foodInfo(foodName,isPromotion,discount,category," +				"type,score,shopid,imgId,price)" +				"values('蔬菜沙拉','1','0.6','西餐','甜香','20','1','0x7f020008','5.00')");		foodDb.add("insert into tb_foodInfo(foodName,isPromotion,discount,category," +				"type,score,shopid,imgId,price)" +				"values('芝香烤肉','0','1','中餐','香辣','500','1','0x7f020009','14.00')");		foodDb.add("insert into tb_foodInfo(foodName,isPromotion,discount,category," +				"type,score,shopid,imgId,price)" +				"values('辣味意面','0','1','西餐','香辣','400','1','0x7f02000a','12.00')");		foodDb.add("insert into tb_foodInfo(foodName,isPromotion,discount,category," +				"type,score,shopid,imgId,price)" +				"values('薯条','1','0.9','配菜','香甜','200','1','0x7f02000b','5.00')");		foodDb.add("insert into tb_foodInfo(foodName,isPromotion,discount,category," +				"type,score,shopid,imgId,price,des)" +				"values('烤鸡腿','1','1','中餐','微辣','600','1','0x7f02000c','8.00','精选鸡腿,用心烤制,外焦里内,喷香诱人……')");	}	}
4、欢迎界面是一个Activity,需要配置:
 <!-- 欢迎界面 -->        <activity            android:name="com.example.eatall.FlashActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>
5、运行一下看效果:(所有的素材都很随意,请忍耐)