




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个人学习总结1.TextView的使用其使用步骤具体如下:在Layout/XXX.xml中定义一个TextView, 然后设置一些属性 其具体知识可以参考:/reference/android/widget/TextView.html 在src/xxx.java中声明一个 TextViewprivate TextView mTextView01;利用findViewById()方法获取xxx.xml中的TextViewmTextView01 = (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(new OnClickListener()public void onClick(View v)/根据实际需要写代码,注意这里采用的是匿名内部类的方式);4. AlertDialog对话框的使用new AlertDialog.Builder(XXX.this).setTitle(Android提示).setMessage(您确定静音登录吗?).setPositiveButton(确定,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int whichButton) / TODO Auto-generated method stub根据实际需要填写代码 ).setNegativeButton(取消, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int whichButton) / TODO Auto-generated method stub 根据实际需要填写代码 ) .show();5.checkBox的使用这里省略定义、声明、获取都已经省略了,关键是写checkBox的监听器:setOnCheckedChangeListener(new OnCheckedChangeListener() public void onCheckedChanged(CompoundButton arg0, boolean arg1) / TODO Auto-generated method stub/ 根据实际情况书写相关代码/这里采用的也是匿名内部类的方式 );6.子菜单(options menu)的使用options menu在屏幕底部最多只能显示6个菜单项/* * 创建子菜单,在点击Mune时会弹出子菜单 */Overridepublic boolean onCreateOptionsMenu(Menu menu) / TODO Auto-generated method stubsuper.onCreateOptionsMenu(menu);menu.add(0,MENU_SETTINGS, 0, 系统设置);menu.add(0, MENU_CHANGPWD, 0,修改密码);return true;/* * 为子菜单写监听器事件 */Overridepublic boolean onOptionsItemSelected(MenuItem item) / TODO Auto-generated method stubswitch(item.getItemId()case MENU_SETTINGS: /根据需要设置代码case MENU_CHANGPWD:/ /根据需要设置代码return super.onOptionsItemSelected(item);7.两个Activity之间的跳转 /生成一个Intent对象Intent intent = new Intent();/设置Intent对象要启动的Activityintent.setClass(xxx.this, xxx1.class);/通过Intent对象启动另外一个Activityxxx.this.startActivity(intent);8.使用XML来创建配置文件其具体操作如下:生成一个Preference资源文件,命名为xxx.xml,具体内容如下 在xxx.java中获取这个xxx.xml文件代码如下:addPreferencesFromResource(R.xml.preferences);根据key找到控件XXXCheckBox整个java代码可以参考:/franksunny/archive/2011/10/21/2219890.html有参考价值的代码:SharedPreferences settings = getSharedPreferences(settings, 0);/自动填充密码 String strPswInputLable= settings.getString(getString(R.string.strPswInputLabel), null);/记住密码checkbox设置final CheckBox mlogin_cb_savepwd = (CheckBox) findViewById(R.id.login_cb_savepwd);/记住密码checkbox 对象 String ck1 = settings.getString(getString(R.string.saveaccount),null);/checkbox记录的值if (ck1 != null & ck1.equals(true) mlogin_cb_savepwd.setChecked(true);mlogin_cb_savepwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() /Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean arge) / TODO Auto-generated method stubSharedPreferences settings = getSharedPreferences(settings, 0);String ck1 = 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会涉及到以下三个类或接口:SQLiteOpenHelperSQLiteOpenHelper 构造方法,一般传递一个要创建的数据库名称name参数onCreate 创建数据库时调用onUpgrade 版本更新时调用getReadableDatabase 创建或打开一个只读数据库getWritableDatabase 创建或打开一个读写数据库SQLiteDatabaseopenOrCreateDatabase 打开或者创建数据库insert 添加一条记录delete 删除一条记录query 查询记录update 更新记录execSQL 执行一条SQL语句close 关闭数据库CursorgetCount 总记录条数isFirst 判断是否第一条记录isLast 判断是否最后一条记录moveToFirst 移动到第一条记录moveToLast 移动到最后一条记录move 移动到指定记录moveToNext 移动到下一条记录moveToPrevious 移动到上一条记录getColumnIndexOrThrow根据列名称获得列索引getInt 获得指定列索引的int类型值getString 获得指定列索引的String类型值具体操作如下:创建一个类Class继承SQLiteOpenHelper,具体可以参考下面一段代码public class DB public static final String KEY_ACCOUNTS=accounts;public static final String KEY_SAVEACCOUNT=saveaccount;public static final String KEY_PWD=pwd;public static final String KEY_NAME=name;public static final String KEY_IMAGE=image;public static final String KEY_AGE=age;public static final String KEY_ADDRESS=address;public static final String KEY_GENDER=gender;public static final String KEY_VISIBLE=visible;public static final String KEY_SAVEPWD=savepwd;public static final String KEY_OPENVIBRA=openvibra;public static final String KEY_RECEIVEGROUPMSG=receivegroupmsg;public static final String KEY_QUITE=quite;private Context mctx;private DatabaseHelper dbHelper;private String accounts;private static SQLiteDatabase db;/定义一个SQLiteDatabase的变量/Constructor 构造函数public DB(Context mctx)this.mctx=mctx;public void open() dbHelper=new DatabaseHelper(mctx);trydb=dbHelper.getWritableDatabase();catch(SQLiteException e)db=dbHelper.getReadableDatabase();public static class DatabaseHelper extends SQLiteOpenHelperprivate static final String DATABASE_NAME=load.db;private static final int DATABASE_VERSION=2;/版本号/* * 创建表名 */ static final String DATABASE_TABLE=user;/* * 创建一个字符常量 */private static final String DATABASE_CREATE =CREATE TABLE user (+accounts int(10)PRIMARY KEY ,+saveaccount int(10),+pwd int(20), + name char(20),+image varchar(20),+age int(10),+address varchar(20),+gender char(20),+visible int(3),+savepwd int(3),+openvibra int(3),+receivegroupmsg int(3),+quite int(3)+); ;/*由于simpleCursorAdapter的方法只识别_id,所以, * 用到sqlite的simpleCursorAdapter时,必须把数据表的主键命名为_id。*/public DatabaseHelper(Context context) super(context, DATABASE_NAME, null, DATABASE_VERSION);/ TODO Auto-generated constructor stub/创建数据库Overridepublic void onCreate(SQLiteDatabase db) / TODO Auto-generated method stubdb.execSQL(DATABASE_CREATE);/更新数据库Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) / TODO Auto-generated method stubdb.execSQL(DROP TABLE IF EXISTS +DATABASE_TABLE);onCreate(db);根据自己的实际需要数据库管理类下面给出几个参考代码:/添加用户,插入数据:public long adduser(String accounts,String pwd,String saveaccount)/insert方法插入的一行记录使用contentValues存放 ContentValues args=new ContentValues(); args.put(KEY_ACCOUNTS,accounts); args.put(KEY_PWD,pwd); args.put(KEY_SAVEACCOUNT,saveaccount); /返回新添记录的行号,该行号是一个内部值,与主键id无关,发生错误返回-1 return db.insert(DatabaseHelper.DATABASE_TABLE, null, args); /添加更新,修改数据:public boolean update(String accounts, String pwd) ContentValues args = new ContentValues(); args.put(KEY_PWD, pwd); return db.update(DatabaseHelper.DATABASE_TABLE, args, accounts=?, new Stringaccounts) 0; /作者定义的新类public Cursor checkUser(String accounts,String pwd)Cursor mCursor=(SQLiteCursor) db.query(true, DatabaseHelper.DATABASE_TABLE,new StringKEY_ACCOUNTS, accounts=? and pwd=?,new Stringaccounts,pwd, null, null, null, null);System.out.println(mCursor);return mCursor;/* * 我自己添加的用来保存用户个人信息:account、name、gender、age、image、address * */public long update(String accounts,String name,String sex,String age,int image,String address)/insert方法插入的一行记录使用contentValues存放 ContentValues args=new ContentValues(); 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 /* * 关键问题是如何把第四个参数设置我要输入的用户名 */ return db. update(DatabaseHelper.DATABASE_TABLE, args, accounts=?,new Stringaccounts); 需要用到数据库的地方进行初始化数据库、调用即可。数据库中还经常使用到Cursor Cursor 是每行的集合。使用 moveToFirst() 定位第一行。必须知道每一列的名称,必须知道每一列的数据类型。Cursor 是一个随机的数据源。关于 Cursor 的重要方法:close() 关闭游标,释放资源。copyStringToBuffer(int columnIndex, CharArrayBuffer buffer) 在缓冲区中检索请求的列的文本,将将其存储。getColumnCount() 返回所有列的总数。getColumnIndex(String columnName) 返回指定列的名称,如果不存在返回-1。getColumnIndexOrThrow(String columnName) 从零开始返回指定列名称,如果不存在将抛出IllegalArgumentException 异常。getColumnName(int columnIndex) 从给定的索引返回列名。getColumnNames() 返回一个字符串数组的列名。getCount() 返回Cursor 中的行数。moveToFirst() 移动光标到第一行。moveToLast() 移动光标到最后一行。moveToNext() 移动光标到下一行。moveToPosition(int position) 移动光标到一个绝对的位置。moveToPrevious() 移动光标到上一行如何在利用图片的路径打开图片:希望直接使用res/drawable中的图片,就需要通过下面的方法了:获取图片的ID int resID = getResources().getIdentifier(imagename, drawable, org.crayzit.Test);/第一个参数:图片的名称/第二个参数:表示drawable目录下的图片/第三个参数:应用程序的包名,记得一定要加双引号”pshowimage.setImageBitmap(BitmapFactory.decodeResource(getResources() , resID );或者是:Drawable image = getResources().getDrawable(resID);10.如何创建一个引导界面: Handler对象用法设计思路:创建一个handler的对象,然后调用里面postDelayed(Runnable r,long delaymillis)的方法Handler主要用于发送和处理和一个线程有关联的消息队列(MessageQueue)的消息和可运行对象参考代码:private final int SPLASH_DISPLAY_LENGHT = 5000; /延迟15秒 Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.splash); main_imageview=(LoadingView)findViewById(R.id.main_imageview); initLoadingImages();new Handler().postDelayed(new Runnable() / Override public void run() Intent mainIntent = new Intent(Splash.this,Load.class); Splash.this.startActivity(mainIntent); Splash.this.finish(); , SPLASH_DISPLAY_LENGHT); 补充:Handler基本概念: Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。Handler 常用方法:post(Runnable) postAtTime(Runnable,long) postDelayed(Runnable long) sendEmptyMessage(int) sendMessage(Message) sendMessageAtTime(Message,long) sendMessageDelayed(Message,long) 以上post类方法允许你排列一个Runnable对象到主线程队列中, sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.11.如何创建一个开机动画设计思想:创建一个类来继承ImageView实现接口Runnable/使用postInvalidate();刷新12. RadioButton的使用这里也是主要介绍RadioButton监听器的有关代码:setOnCheckedChangeListener(new OnCheckedChangeListener() public void onCheckedChanged(RadioGroup group, int checkedId) RadioButton sexRadio = (RadioButton)findViewById(checkedId);sexString = sexRadio.getText().toString(););13.Intent与Bundle的使用总结14.自定义listView的使用实现原理:自定义列表的Android程序,程序将实现一个使用自定义的适配器(Adapter)绑定数据,通过contextView.setTag绑定数据有按钮的ListView。系统显示列表(ListView)时,首先会实例化一个适配器,本文将实例化一个自定义的适配器。实现自定义适配器,必须手动映射数据,这时就需要重写getView()方法,系统在绘制列表的每一行的时候将调用此方法。ListView在开始绘制的时候,系统自动调用getCount()函数,根据函数返回值得到ListView的长度,然后根据这个长度,调用getView()逐一画出每一行。大致步骤如下:第一步:准备主布局文件、组件布局文件等第二步:获取并整理数据第三部:绑定数据,这里我们是通过自己编写Adapter类来完成的例子:注意的是我们设置 ListView 的 id 为 ”android:id/list”, 意思是我们引用 Android 已经为我们定义好的一个 id ,名字是 list ,如果你不定义成这样,这个 ListView 是不能被 ListActivity 识别的15. 可展开的列表组件(ExpandableListView)的使用方法总结ExpandableListView是一个垂直滚动的显示两个级别(group,child)列表项的视图。列表项来自ExpandableListAdapter,gourp可以单独展开。步骤具体如下:1 在layout的xml文件中定义一个ExpandableListView参考代码: 2 定义两个List,用来存放控件中Group/Child中的String参考代码:private List groupArray;private ListList childArray;对这两个List进行初始化,并插入一些数据groupArray = new ArrayList();childArray = new ArrayListList();groupArray.add(第一行);groupArray.add(第二行);List tempArray = new ArrayList();tempArray.add(第一条);tempArray.add(第二条);tempArray.add(第三条);for(int index = 0; index groupArray.size(); +index) childArray.add(tempArray);3 定义ExpandableListView的Adapter/ExpandableListView的Adapterpublic class ExpandableAdapter extends BaseExpandableListAdapterActivity activity;public ExpandableAdapter(Activity a)activity = a;public Object getChild(int groupPosition, int childPosition)return childArray.get(groupPosition).get(childPosition);public long getChildId(int groupPosition, int childPosition)return childPosition;public int getChildrenCount(int groupPosition)return childArray.get(groupPosition).size();public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent)String string = childArray.get(groupPosition).get(childPosition);return getGenericView(string);/ group method stubpublic Object getGroup(int groupPosition)return groupArray.get(groupPosition);public int getGroupCount()return groupArray.size();public long getGroupId(int groupPosition)return groupPosition;public View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent)String string = groupArray.get(groupPosition);return getGenericView(string);/ View stub to create Group/Children s Viewpublic TextView getGenericView(String string)/ Layout parameters for the ExpandableListViewAbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);TextView text = new TextView(activity);text.setLayoutParams(layoutParams);/ Center the text verticallytext.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);/ Set the text starting positiontext.setPadding(36, 0, 0, 0);text.setText(string);return text;public boolean hasStableIds()return false;public boolean isChildSelectable(int groupPosition, int childPosition)return true;4 最后个定义好的ExpandableListView添加AdapterExpandableListView expandableListView =(ExpandableListView)findViewById(R.id.expandableListView);expandableListView.setAdapter(new ExpandableAdapter(Main.this)5 常用方法 expandGroup(int groupPos):在分组列表视图中展开一组 setSelectedGroup(int groupPosition):设置选择指定的组 setSelectedChild(ing groupPosition,int childPosition,boolean shouldExpandGroup):设置选择指定的子项 getPackedPositionGroup(long packedPosition):返回所选择的组 getPackedPositionForChild(ing groupPosition,int childPosition):返回所选择的子项 getPackedPositionType(long packedPosition):返回所选择的类型(group.child) isGroupExpanded(int groupPosition):判断此组是否展开 ExpandableListContextMenuInfo info = (ExpandableListMenuInfo)item.getMenuInfo(); String title = (TextView)info.targetView).getText().toString(); int type = ExpandableListView.getPackedPositionType(info.packedPosition); if(type = ExpandableListView.PACKED_POSITION_TYPE_CHILD) int gourpPos = ExpandableListView.getPackedPositionGroup(info.packedPosition); int childPos = ExpandableListView.getPackedPositiionChild(info.packedPosition); 16.android SD卡文件的读取SD卡使用的是FAT(File Allocation Table)的文件系统,不支持访问模式和权限控制,SD卡适用于保存大尺寸的文件或者是一些无需设置访问权限的文件Android模拟器支持SD卡,但模拟器中没有缺省的SD卡,开发人员须在模拟器中手工添加SD卡的映像文件为了读写SD卡上的文件,必须在AndroidManifest.xml中添加读写SD卡的权限在SD卡上创建与删除文件的权限 Android.permission.MOUNT_UNMOUNT_FIFESYSTEMS向SD卡写入数据的权限 Android.permission.WRITE_EXTERNAL_STORAGE编程访问SD卡方法一首先需要检测系统的/mnt/sdcard目录是否可用使用文件的输入输出流对SD卡里的文件进行读写编程访问SD卡方法二调用E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技素养考试题及答案
- 铸管退火工技能操作考核试卷及答案
- 军事护理考试题及答案
- 救援常识考试题及答案
- 野生植物采集工协作考核试卷及答案
- 有机宝石检验员理念考核试卷及答案
- 铸管退火工设备维护与保养考核试卷及答案
- 课件文案打磨
- 课件文案句子摘抄
- 印花版修复工职业考核试卷及答案
- 提升教师教学能力的在线学习平台
- 2025新高考数学核心母题400道(教师版)
- 金融标准化知识培训课件
- 大学物理教案设计方案
- 国际经济合作课件
- LED光波治疗仪讲课
- 2020-2024年五年高考政治真题分类汇编专题19 世界多极化(原卷版)
- 旅游新媒体营销与运营 课件全套 张建庆 模块1-8 旅游新媒体营销与运营的认知-旅游企业新媒体运营
- 胃食管反流-讲稿
- 急诊急救流程大全
- 2024年提前解除终止服务合同协议书
评论
0/150
提交评论