QQ界面学习总结材料.docx
- 文档编号:9402821
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:31
- 大小:51.16KB
QQ界面学习总结材料.docx
《QQ界面学习总结材料.docx》由会员分享,可在线阅读,更多相关《QQ界面学习总结材料.docx(31页珍藏版)》请在冰点文库上搜索。
QQ界面学习总结材料
个人学习总结
1.TextView的使用
其使用步骤具体如下:
在Layout/XXX.xml中定义一个TextView,然后设置一些属性
text="TextView01" android: id="+id/TextView01" android: layout_width="wrap_content" android: layout_height="wrap_content" android: layout_x="61px" android: layout_y="69px"> 其具体知识可以参考: developer.android./reference/android/widget/TextView.html 在src/xxx.java中声明一个TextView privateTextViewmTextView01; 利用findViewById()方法获取xxx.xml中的TextView mTextView01=(TextView)findViewById(R.id.TextView01); 2.EditView的使用和TextView类似 3.Button的使用 与TextView、EditView的区别主要是: 一般为Button绑定一个监听器,操作如下 在Layout/XXX.xml中定义一个Button ②在src/xxx.java中声明一个Button ③利用findViewById()方法获取xxx.xml中的Button 写监听器代码 button_exit.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ //根据实际需要写代码,注意这里采用的是匿名部类的方式 } }); 4.AlertDialog对话框的使用 newAlertDialog.Builder(XXX.this).setTitle("Android 提示") .setMessage("您确定静音登录吗? ").setPositiveButton("确定",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intwhichButton){ //TODOAuto-generatedmethodstub 根据实际需要填写代码 } }) .setNegativeButton("取消",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intwhichButton){ //TODOAuto-generatedmethodstub 根据实际需要填写代码 } }) .show(); 5.checkBox的使用 这里省略定义、声明、获取都已经省略了,关键是写checkBox的监听器: setOnCheckedChangeListener(newOnCheckedChangeListener(){ publicvoidonCheckedChanged(CompoundButtonarg0,booleanarg1){ //TODOAuto-generatedmethodstub //根据实际情况书写相关代码 //这里采用的也是匿名部类的方式} }); 6.子菜单(optionsmenu)的使用 optionsmenu在屏幕底部最多只能显示6个菜单项 /** *创建子菜单,在点击Mune时会弹出子菜单 */ Override publicbooleanonCreateOptionsMenu(Menumenu){ //TODOAuto-generatedmethodstub super.onCreateOptionsMenu(menu); menu.add(0,MENU_SETTINGS,0,"系统设置"); menu.add(0,MENU_CHANGPWD,0,"修改密码"); returntrue; } } /** *为子菜单写监听器事件 */ Override publicbooleanonOptionsItemSelected(MenuItemitem){ //TODOAuto-generatedmethodstub switch(item.getItemId()){ caseMENU_SETTINGS: //根据需要设置代码 caseMENU_CHANGPWD: ////根据需要设置代码 } returnsuper.onOptionsItemSelected(item); } 7.两个Activity之间的跳转 //生成一个Intent对象 Intentintent=newIntent(); //设置Intent对象要启动的Activity intent.setClass(xxx.this,xxx1.class); //通过Intent对象启动另外一个Activity xxx.this.startActivity(intent); 8.使用XML来创建配置文件 其具体操作如下: 生成一个Preference资源文件,命名为xxx.xml,具体容如下 xmlversion="1.0"encoding="utf-8"? > xmlns: android="schemas.android./apk/res/android" android: title="系统设置"> xmlns: android="schemas.android./apk/res/android" android: title="登录设置" android: summary="settingsaboutemotions"android: key="settings"> android: title="是否记住密码? " android: summaryOn="是" android: summaryOff="否" android: defaultValue="true"android: key="opt_remember"> ……………………………….> ………………………> …………………………..> …………………………………………..> 在xxx.java中获取这个xxx.xml文件代码如下: addPreferencesFromResource(R.xml.preferences); 根据key找到控件XXXCheckBox 整个java代码可以参考: .cnblogs./franksunny/archive/2011/10/21/2219890.html 有参考价值的代码: SharedPreferencessettings=getSharedPreferences("settings",0); //自动填充密码 StringstrPswInputLable=settings.getString(getString(R.string.strPswInputLabel),null); //记住密码checkbox设置 finalCheckBoxmlogin_cb_savepwd=(CheckBox)findViewById(R.id.login_cb_savepwd);//记住密码checkbox对象 Stringck1=settings.getString(getString(R.string.saveaccount), null);//checkbox记录的值 if(ck1! =null&&ck1.equals("true")){mlogin_cb_savepwd.setChecked(true);} mlogin_cb_savepwd.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener(){ //Override publicvoidonCheckedChanged(CompoundButtonbuttonView, booleanarge){ //TODOAuto-generatedmethodstub SharedPreferencessettings=getSharedPreferences("settings",0); Stringck1=settings.getString(getString(R.string.saveaccount),null); if(ck1! =null&&ck1.equals("true")){ settings.edit() putString(getString(R.string.saveaccount),"false").commit(); settings.edit().remove(getString(R.string.saveaccount)).commit(); mlogin_cb_savepwd.setChecked(false); } } }); 9.Sqlite数据库的使用 在Android应用中创建数据库后数据库文件是存储在/data/data/应用包名/databases/下。 在Android中使用到SQLite会涉及到以下三个类或接口: SQLiteOpenHelper SQLiteOpenHelper构造方法,一般传递一个要创建的数据库名称name参数 onCreate创建数据库时调用 onUpgrade版本更新时调用 getReadableDatabase创建或打开一个只读数据库 getWritableDatabase创建或打开一个读写数据库 SQLiteDatabase openOrCreateDatabase打开或者创建数据库 insert添加一条记录 delete删除一条记录 query查询记录 update更新记录 execSQL执行一条SQL语句 close关闭数据库 Cursor getCount总记录条数 isFirst判断是否第一条记录 isLast判断是否最后一条记录 moveToFirst移动到第一条记录 moveToLast移动到最后一条记录 move移动到指定记录 moveToNext移动到下一条记录 moveToPrevious移动到上一条记录 getColumnIndexOrThrow根据列名称获得列索引 getInt获得指定列索引的int类型值 getString获得指定列索引的String类型值 具体操作如下: 创建一个类Class继承SQLiteOpenHelper,具体可以参考下面一段代码 publicclassDB{ publicstaticfinalStringKEY_ACCOUNTS="accounts"; publicstaticfinalStringKEY_SAVEACCOUNT="saveaccount"; publicstaticfinalStringKEY_PWD="pwd"; publicstaticfinalStringKEY_NAME="name"; publicstaticfinalStringKEY_IMAGE="image"; publicstaticfinalStringKEY_AGE="age"; publicstaticfinalStringKEY_ADDRESS="address"; publicstaticfinalStringKEY_GENDER="gender"; publicstaticfinalStringKEY_VISIBLE="visible"; publicstaticfinalStringKEY_SAVEPWD="savepwd"; publicstaticfinalStringKEY_OPENVIBRA="openvibra"; publicstaticfinalStringKEY_RECEIVEGROUPMSG="receivegroupmsg"; publicstaticfinalStringKEY_QUITE="quite"; privateContextmctx; privateDatabaseHelperdbHelper; privateStringaccounts; privatestaticSQLiteDatabasedb;//定义一个SQLiteDatabase的变量 //Constructor构造函数 publicDB(Contextmctx){ this.mctx=mctx; } publicvoidopen(){ dbHelper=newDatabaseHelper(mctx); try{ db=dbHelper.getWritableDatabase(); } catch(SQLiteExceptione){ db=dbHelper.getReadableDatabase(); } } publicstaticclassDatabaseHelperextendsSQLiteOpenHelper{ privatestaticfinalStringDATABASE_NAME="load.db"; privatestaticfinalintDATABASE_VERSION=2;//版本号 /** *创建表名 */ staticfinalStringDATABASE_TABLE="user"; /** *创建一个字符常量 */ privatestaticfinalStringDATABASE_CREATE= "CREATETABLEuser("+ "accountsint(10)PRIMARYKEY,"+"saveaccountint(10),"+ "pwdint(20),"+"namechar(20),"+"imagevarchar(20),"+"ageint(10),"+"addressvarchar(20),"+ "genderchar(20),"+"visibleint(3),"+"savepwdint(3),"+"openvibraint(3),"+"receivegroupmsgint(3),"+ "quiteint(3)"+ ");"; /*由于simpleCursorAdapter的方法只识别_id,所以, *用到sqlite的simpleCursorAdapter时,必须把数据表的主键命名为_id。 */ publicDatabaseHelper(Contextcontext){ super(context,DATABASE_NAME,null,DATABASE_VERSION); //TODOAuto-generatedconstructorstub } //创建数据库 Override publicvoidonCreate(SQLiteDatabasedb){ //TODOAuto-generatedmethodstub db.execSQL(DATABASE_CREATE); } //更新数据库 Override publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ //TODOAuto-generatedmethodstub db.execSQL("DROPTABLEIFEXISTS"+DATABASE_TABLE); onCreate(db); } } 根据自己的实际需要数据库管理类 下面给出几个参考代码: //添加用户,插入数据: publiclongadduser(Stringaccounts,Stringpwd,Stringsaveaccount){ //insert方法插入的一行记录使用contentValues存放 ContentValuesargs=newContentValues(); args.put(KEY_ACCOUNTS,accounts); args.put(KEY_PWD,pwd); args.put(KEY_SAVEACCOUNT,saveaccount); //返回新添记录的行号,该行号是一个部值,与主键id无关,发生错误返回-1 returndb.insert(DatabaseHelper.DATABASE_TABLE,null,args); } //添加更新,修改数据: publicbooleanupdate(Stringaccounts,Stringpwd){ ContentValuesargs=newContentValues(); args.put(KEY_PWD,pwd); returndb.update(DatabaseHelper.DATABASE_TABLE,args,"accounts=? ",newString[]{accounts})>0; } //作者定义的新类 publicCursorcheckUser(Stringaccounts,Stringpwd){ CursormCursor=(SQLiteCursor)db.query(true,DatabaseHelper.DATABASE_TABLE, newString[]{KEY_ACCOUNTS}, "accounts=? andpwd=? ", newString[]{accounts,pwd},null,null,null,null); System.out.println(mCursor); returnmCursor; } /** *我自己添加的用来保存用户个人信息: account、name、gender、age、image、address * */ publiclongupdate(Stringaccounts,Stringname,Stringsex,Stringage,intimage,Stringaddress){ //insert方法插入的一行记录使用contentValues存放 ContentValuesargs=newContentValues(); args.put(KEY_ACCOUNTS,accounts); args.put(KEY_NAME,name); args.put(KEY_GENDER,sex); args.put(KEY_AGE,age); args.put(KEY_IMAGE,image); args.put(KEY_ADDRESS,address); //返回新添记录的行号,该行号是一个部值,与主键id无关,发生错误返回-1 /** *关键问题是如何把第四个参数设置我要输入的用户名 */ returndb.update(DatabaseHelper.DATABASE_TABLE,args,"accounts=? ",newString[]{accounts}); } 需要用到数据库的地方进行初始化数据库、调用即可。 数据库中还经常使用到Cursor Cursor是每行的集合。 使用moveToFirst()定位第一行。 必须知道每一列的名称,必须知道每一列的数据类型。 Cursor是一个随机的数据源。 关于Cursor的重要方法: close()关闭游标,释放资源。 copyStringToBuffer(intcolumnIndex,CharArrayBufferbuffer)在缓冲区中检索请求的列的文本,将将其存储。 getColumnCount()返回所有列的总数。 getColumnIndex(StringcolumnName)返回指定列的名称,如果不存在返回-1。 getColumnIndexOrThrow(StringcolumnName)从零开始返回指定列名称,如果不存在将抛出IllegalArgumentException异常。 getColumnName(intcolumnIndex)从给定的索引返回列名。 getColumnNames()返回一个字符串数组的列名。 getCount()返回Cursor中的行数。 moveToFirst() 移动光标到第一行。 moveToLast()移动光标到最后一行。 moveToNext()移动光标到下一行。 moveToPosition(intposition)移动光标到一个绝对的位置。 moveToPrevious()移动光标到上一行 如何在利用图片的路径打开图片: 希望直接使用res/drawable中的图片,就需要通过下面的方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QQ 界面 学习 总结 材料