学习总结一
来源:互联网 发布:网络老男孩教程 编辑:程序博客网 时间:2024/05/17 06:58
1.重点RelativeLayout 的几种位置属性:可设置位于父窗口上,下,左,右,中间,水平居中,垂直居中。位于指定控件上下左右,上下左右边界
2.TextView 的属性,其子类 EditView, Button
3.EditView inputType
1.ImageView 及其子类 ImageButton
2.AdapterView,是一个抽象基类,容器,将列表项以合适的形式显示出来,监听器setOnItemClickListener、setOnItemSelecterListener
ListView的属性,entries,divider,dividerHeight
GridView
3.Adapter本身是一个接口,
ArrayAdapter的构造器,用于将数组或List集合的多个值包装成多个列表项
SimpleAdapter,功能强大
BaseAdapter,重写的几种方法
实现AdapterView的步骤:
一、采用4种方法之一创建Adapter
二、调用AdapterView的setAdapter(Adapter)方法设置Adapter即可
AutoCompleteTextView 需要setAdapter绑定一个Adapter
ExpandableListView 可展开的列表组件
Spinner,供用户选择
AdaperViewFlipper 显示Adapter提供的多个View组件,每次只能显示一个,通过showPrevious()和showNext()方法控制该组件显示上一个、下一个
1.ProgressBar style属性:@android:style/Widget.ProgressBar.Horezontal ...
进度的操作:setProgress(int); incrementProgressBy(int)
拖动条SeekBar 滑动触发的方法 onProgressChanged
------------------------------------------------------------------------------------------------------------------------------
Dialog,常用AlertDialog,其他子类ProgressDialog、DatePickerDialog、TimePickerDialog
AlertDialog的实现通过 内部类AlertDialog.Builder 的create()方法来实现的。
常用方法:
new AlertDialog.Builder(this)
.setTitle("标题")
.setIcon(R.drawable.ic_launcher)
.setPositiveButton("确定", OnClickListener listener)
.setItems(R.array.array1, DialogInterface.OnClickListener listener)
.create();
------------------------------------------------------------------------------------------------------------------------------
菜单,添加菜单的命令
1.重写Activity的onCreateOptionsMenu(Menu menu) 方法,在该方法里调用Menu对象的方法来添加菜单项或子菜单。或利用XML文件,通过inflate转换即可。
2.响应应用程序的单击事件,重写 Activity的onOptionsItemSelected(MenuItem mi) 方法即可
上下文菜单,长按相应组件会弹出该菜单
需要调用Activity的registerForContextMenu(View view)方法绑定该组件。
它创建对应的方法是 Activity 的 onCreateContexMenu(ContextMenu menu, View source, ContextMenu.ContextMenuInfo menuInfo)方法
点击对应的方法 onContexItemSelected(MenuItem mi) 方法
ActionBar
菜单xml中加属性 android:showAsAction="always|withText" 即可显示为ActionBar
------------------------------------------------------------------------------------------------------------------------------
Android的事件处理:
1.基于监听器的事件处理,基于回调的事件处理
2.Configuration类
只允许UI线程修改Activity里的UI组件
3.Message:Handler接收和处理的消息对象
Looper:每个线程只能拥有一个Looper,它loop方法负责读取MessageQueue中的消息,读到信息之后就把消息交给发送该消息的Handler进行处理
MessageQueue:消息队列,它采用先进先出的方式来管理Message。程序创建Looper对象时会在它的构造器中创建MessageQueue对象。
Handler:它的作用有两个--发送消息和处理消息
在UI线程中,系统已经初始化了一个Looper对象,因此程序直接创建Handler即可,然后就可通过Handler来发送消息、处理消息
程序员自己启动的子线程,程序员必须自己创建一个Looper对象,并启动它。创建Looper对象调用它的prepare()方法即可。
--------------------------------------------------------------------------------------------------------------------------
Activity
1.LauncherActivity 继承自 ListActivity。注意:需要重写Intent intentForPosition(int position)方法。
1.多Activity之间的通信,使用Intent、Bundle
Intent方法 putExtra(Bundle data); Bundle getExtras();
2.启动 其他Activity并返回结果,流程:
发起界面:startActivityForResult(Intent, int requestCode);
提供回调:public void onActivityResult(int requestCode, int resultCode, Intent intent); //启动界面完成会回调该函数
启动界面:setResult(int resultCode, Intent);
3.Activity的启动模式:
Standard, 默认启动模式
SingleTop,
SingleTask,特点:如果不位于Task栈顶,会把此Activity以上的移出栈,从而使目标Activity转入栈顶
SingleInstance
通过配置Activity的属性:android:launchMode
4.Fragment与Activity通信
(1)Activity->Fragment, mgt=getFragmentManager(); action=mgt.beginTransaction(); action.findFragmentById(int id); 获取到Fragment;
创建Bundle,调用frag.setArguments(Bundle) 方法
(2)Fragment->Activity, 调用 getActivity(),即返回activity;
Fragment定义一个接口,Activity来实现。Fragment即可调用该回调方法将数据传递给Activity。
------------------------------------------------------------------------------------------------------------------------
1.Intent,Android使用统一的Intent对象来封装这种“启动意图”,很明显使用Intent提供了一致的编程模型。
2.Intent的属性,Component、Action、Category、Data、Type、Extra、Flag
Component设置要启动的组件,可包含在Intent的构造函数中
Action、Category都是字符串,也可以使用系统Activity
Data、Type:
在AndroidManifest.xml文件中Data、Type属性都通过<data.../>,格式如下:
<data android:mimeType=""
android:scheme=""
android:host=""
android:port=""
android:path=""
android:pathPrefix=""
android:pathPattern="" />
Action 和 Data属性结合使用的效果。
Flag
3.Tab页面创建的两种方法,setContent(int viewId); setContent(Intent intent);
-----------------------------------------------------------------------------------------------------------------------
Android的应用资源
1.在XML文件中访问资源 @R.integer.interger_name
在Java代码中使用资源 getResource()、 getInteger(R.integer.integer_name);
2.Drawable资源
StateListDrawable资源,xml语法<selector>,可指定如下属性 adnroid:color android:state_xxx
LayerDrawable资源,xml语法<selector>
ShapeDrawable资源,xml语法<shape>
ClipDrawable资源,xml语法<clip>
3.res 资源 根元素<resources>, values存放字符串(strings.xml下)、颜色(colors.xml下)、尺寸(dimens.xml)、数组(arrays.xml下)、样式资源(style 有
name,parent属性)
4.原始资源:
/res/raw 目录下,会在R下生成一个索引项
/assets/ 通过AssetMannager来管理原始资源
AssetMannager访问Assets资源:
InputStream open(String fileName);
AssetFileDescriptor openFd(String fileName);
------------------------------------------------------------------------------------------------------------------------------
Android的数据存储与io
1.SharedPreference,保存少量数据,主要是简单类型的key-value对。
实例化,Context.getSharedPreferences(String name, int mode);
SharedPreference的常用方法:
boolean getXXX(String key, xxx defValue);
boolean contains(String key)
abstract Map<String, ?> getAll();
SharedPreferences.Editor 用于数据的编辑
SharedPreferences.Editor clear() 清空
SharedPreferences.Editor putXXX(String key, xxx value) 存入或替换
SharedPreferences.Editor remove(String key) 删除
boolean commit() 提交修改
与其他应用程序的交互(如果有权限,通过mode)
1.需要创建其他程序对应的Context. Context createPackageContext(String packageName, int MODE);
2.调用获取Context对象的方法. Context getSharedPreferences(String name, int mode);
3.调用获取SharedPreferences 操作。
2.file.支持Java IO的操作
另外Context下有这几种方法:
FileInputStream openFileInput(String name)
FileOutputStream openFileOutput(String name, int mode)
File getFilesDir(); //获取该应用程序的数据文件夹的绝对路径
getDir(String name, int mode) //获取或创建name对应的子目录
String[] fileList();
deleteFile(String);
3. SQLite数据库
打开或新建数据库
SQLiteDatabase的静态方法,openDatabase(), openOrCreateDatabase()
常用操作(省略特定方法):
void execSQL(String sql, Object[] bindArgs); //执行带占位符的sql语句
void execSQL(String sql);
Cursor rawQuery(String sql, String[] selectionArgs)
SQLiteOpenHelper是android提供的一个管理数据库的工具类。一般使用它的子类,来管理数据库
通过getReadableDatabase(),getWritableDatabase()来获取SQLiteDatabase对象
4. 手势
(1)需要添加 GestureDetector实例,如果在Activity上需要重写onTouchEvent方法
(2)在Activity中的TouchEvent 事件绑定监听器,在事件处理中,把TouchEvent事件交给GestureDetactor处理
onFling坐标系↓→,即向右x>0 向下 y>0,否则相反
----------------------------------------------------------------------------------------------------------------------------
Handler作用,对MessageQueue操作,例如sendMessage可以是把消息加入队列
1.发送消息sendMessage(Message),通过回调处理消息(handleMessage(Message))
2.延时任务 postDelayed(Runnable, long);也是对上述方法的封装
Bundle,携带数据,起到一个Map作用
携带数据的方法putXXX();
获取数据的方法getXXX();
Intent类详解:
可携带额外的数据,实质上还是通过Bundle来实现的,函数: putExtra(String name, boolean value)...等基本类型和数组
putExtras(Intent src), putExtras(Bundle extras)
获取Intent携带的数据,getXXXExtra(String name, XXX default); Object getExtra(String name, Object defaultValue); Bundle getExtras()
---------------------------------------------------------------------------------------------------------------------------------
Service
1.开发Service的步骤:1.定义一个继承Service的子类。2.在AndroidManifest.xml文件中配置该Service
2.生命周期:
IBinder onBind(Intent intent) 应用程序与Service通信的媒介
onCreate() ,Service创建时调用
onDestroy() ,被关闭前调用
StartCommand(Intent, int flags, int startld) ,应用程序调用startService时调用
onUnbind() 所有应用程序都断开时,调用
3.两种启动方法及其区别。通过Context的 startService(); bindService();
不过,如果需要与Service通信,应该调用bindService(Intent service, ServiceConnection conn, int flags);
通过ServiceConnection对象的onServiceConnected(ComponetName name, IBinder service) 的service进行通信。
在需要与Service通信的模块中添加ServiceConnection,一般是Activity
4.IntentService适合处理耗时较长的任务。他会创建单独的worker线程来处理onHandleIntent()方法实现的代码。完成后会自动停止。
只需要实现onHandleIntent(Intent intent)方法。
--------------------------------------------------------------------------------------------------------------------------------
BroadcastReceiver,
1.发送广播。(1) 创建需要启动的相应的Intent (2) 调用Context的sendBroadcast()或sendOrderedBroadcast()方法
2.接受广播。重写BroadcastReceiver的onReceive(Context context, Intent intent) 方法。
匹配 IntentFilter有两种方法,都是通过IntentFilter
带代码中registerReceiver(receive, filter)
在配置文件中加<intent-filter>
---------------------------------------------------------------------------------------------------------------------------------
2.TextView 的属性,其子类 EditView, Button
3.EditView inputType
1.ImageView 及其子类 ImageButton
2.AdapterView,是一个抽象基类,容器,将列表项以合适的形式显示出来,监听器setOnItemClickListener、setOnItemSelecterListener
ListView的属性,entries,divider,dividerHeight
GridView
3.Adapter本身是一个接口,
ArrayAdapter的构造器,用于将数组或List集合的多个值包装成多个列表项
SimpleAdapter,功能强大
BaseAdapter,重写的几种方法
实现AdapterView的步骤:
一、采用4种方法之一创建Adapter
二、调用AdapterView的setAdapter(Adapter)方法设置Adapter即可
AutoCompleteTextView 需要setAdapter绑定一个Adapter
ExpandableListView 可展开的列表组件
Spinner,供用户选择
AdaperViewFlipper 显示Adapter提供的多个View组件,每次只能显示一个,通过showPrevious()和showNext()方法控制该组件显示上一个、下一个
1.ProgressBar style属性:@android:style/Widget.ProgressBar.Horezontal ...
进度的操作:setProgress(int); incrementProgressBy(int)
拖动条SeekBar 滑动触发的方法 onProgressChanged
------------------------------------------------------------------------------------------------------------------------------
Dialog,常用AlertDialog,其他子类ProgressDialog、DatePickerDialog、TimePickerDialog
AlertDialog的实现通过 内部类AlertDialog.Builder 的create()方法来实现的。
常用方法:
new AlertDialog.Builder(this)
.setTitle("标题")
.setIcon(R.drawable.ic_launcher)
.setPositiveButton("确定", OnClickListener listener)
.setItems(R.array.array1, DialogInterface.OnClickListener listener)
.create();
------------------------------------------------------------------------------------------------------------------------------
菜单,添加菜单的命令
1.重写Activity的onCreateOptionsMenu(Menu menu) 方法,在该方法里调用Menu对象的方法来添加菜单项或子菜单。或利用XML文件,通过inflate转换即可。
2.响应应用程序的单击事件,重写 Activity的onOptionsItemSelected(MenuItem mi) 方法即可
上下文菜单,长按相应组件会弹出该菜单
需要调用Activity的registerForContextMenu(View view)方法绑定该组件。
它创建对应的方法是 Activity 的 onCreateContexMenu(ContextMenu menu, View source, ContextMenu.ContextMenuInfo menuInfo)方法
点击对应的方法 onContexItemSelected(MenuItem mi) 方法
ActionBar
菜单xml中加属性 android:showAsAction="always|withText" 即可显示为ActionBar
------------------------------------------------------------------------------------------------------------------------------
Android的事件处理:
1.基于监听器的事件处理,基于回调的事件处理
2.Configuration类
只允许UI线程修改Activity里的UI组件
3.Message:Handler接收和处理的消息对象
Looper:每个线程只能拥有一个Looper,它loop方法负责读取MessageQueue中的消息,读到信息之后就把消息交给发送该消息的Handler进行处理
MessageQueue:消息队列,它采用先进先出的方式来管理Message。程序创建Looper对象时会在它的构造器中创建MessageQueue对象。
Handler:它的作用有两个--发送消息和处理消息
在UI线程中,系统已经初始化了一个Looper对象,因此程序直接创建Handler即可,然后就可通过Handler来发送消息、处理消息
程序员自己启动的子线程,程序员必须自己创建一个Looper对象,并启动它。创建Looper对象调用它的prepare()方法即可。
--------------------------------------------------------------------------------------------------------------------------
Activity
1.LauncherActivity 继承自 ListActivity。注意:需要重写Intent intentForPosition(int position)方法。
1.多Activity之间的通信,使用Intent、Bundle
Intent方法 putExtra(Bundle data); Bundle getExtras();
2.启动 其他Activity并返回结果,流程:
发起界面:startActivityForResult(Intent, int requestCode);
提供回调:public void onActivityResult(int requestCode, int resultCode, Intent intent); //启动界面完成会回调该函数
启动界面:setResult(int resultCode, Intent);
3.Activity的启动模式:
Standard, 默认启动模式
SingleTop,
SingleTask,特点:如果不位于Task栈顶,会把此Activity以上的移出栈,从而使目标Activity转入栈顶
SingleInstance
通过配置Activity的属性:android:launchMode
4.Fragment与Activity通信
(1)Activity->Fragment, mgt=getFragmentManager(); action=mgt.beginTransaction(); action.findFragmentById(int id); 获取到Fragment;
创建Bundle,调用frag.setArguments(Bundle) 方法
(2)Fragment->Activity, 调用 getActivity(),即返回activity;
Fragment定义一个接口,Activity来实现。Fragment即可调用该回调方法将数据传递给Activity。
------------------------------------------------------------------------------------------------------------------------
1.Intent,Android使用统一的Intent对象来封装这种“启动意图”,很明显使用Intent提供了一致的编程模型。
2.Intent的属性,Component、Action、Category、Data、Type、Extra、Flag
Component设置要启动的组件,可包含在Intent的构造函数中
Action、Category都是字符串,也可以使用系统Activity
Data、Type:
在AndroidManifest.xml文件中Data、Type属性都通过<data.../>,格式如下:
<data android:mimeType=""
android:scheme=""
android:host=""
android:port=""
android:path=""
android:pathPrefix=""
android:pathPattern="" />
Action 和 Data属性结合使用的效果。
Flag
3.Tab页面创建的两种方法,setContent(int viewId); setContent(Intent intent);
-----------------------------------------------------------------------------------------------------------------------
Android的应用资源
1.在XML文件中访问资源 @R.integer.interger_name
在Java代码中使用资源 getResource()、 getInteger(R.integer.integer_name);
2.Drawable资源
StateListDrawable资源,xml语法<selector>,可指定如下属性 adnroid:color android:state_xxx
LayerDrawable资源,xml语法<selector>
ShapeDrawable资源,xml语法<shape>
ClipDrawable资源,xml语法<clip>
3.res 资源 根元素<resources>, values存放字符串(strings.xml下)、颜色(colors.xml下)、尺寸(dimens.xml)、数组(arrays.xml下)、样式资源(style 有
name,parent属性)
4.原始资源:
/res/raw 目录下,会在R下生成一个索引项
/assets/ 通过AssetMannager来管理原始资源
AssetMannager访问Assets资源:
InputStream open(String fileName);
AssetFileDescriptor openFd(String fileName);
------------------------------------------------------------------------------------------------------------------------------
Android的数据存储与io
1.SharedPreference,保存少量数据,主要是简单类型的key-value对。
实例化,Context.getSharedPreferences(String name, int mode);
SharedPreference的常用方法:
boolean getXXX(String key, xxx defValue);
boolean contains(String key)
abstract Map<String, ?> getAll();
SharedPreferences.Editor 用于数据的编辑
SharedPreferences.Editor clear() 清空
SharedPreferences.Editor putXXX(String key, xxx value) 存入或替换
SharedPreferences.Editor remove(String key) 删除
boolean commit() 提交修改
与其他应用程序的交互(如果有权限,通过mode)
1.需要创建其他程序对应的Context. Context createPackageContext(String packageName, int MODE);
2.调用获取Context对象的方法. Context getSharedPreferences(String name, int mode);
3.调用获取SharedPreferences 操作。
2.file.支持Java IO的操作
另外Context下有这几种方法:
FileInputStream openFileInput(String name)
FileOutputStream openFileOutput(String name, int mode)
File getFilesDir(); //获取该应用程序的数据文件夹的绝对路径
getDir(String name, int mode) //获取或创建name对应的子目录
String[] fileList();
deleteFile(String);
3. SQLite数据库
打开或新建数据库
SQLiteDatabase的静态方法,openDatabase(), openOrCreateDatabase()
常用操作(省略特定方法):
void execSQL(String sql, Object[] bindArgs); //执行带占位符的sql语句
void execSQL(String sql);
Cursor rawQuery(String sql, String[] selectionArgs)
SQLiteOpenHelper是android提供的一个管理数据库的工具类。一般使用它的子类,来管理数据库
通过getReadableDatabase(),getWritableDatabase()来获取SQLiteDatabase对象
4. 手势
(1)需要添加 GestureDetector实例,如果在Activity上需要重写onTouchEvent方法
(2)在Activity中的TouchEvent 事件绑定监听器,在事件处理中,把TouchEvent事件交给GestureDetactor处理
onFling坐标系↓→,即向右x>0 向下 y>0,否则相反
----------------------------------------------------------------------------------------------------------------------------
Handler作用,对MessageQueue操作,例如sendMessage可以是把消息加入队列
1.发送消息sendMessage(Message),通过回调处理消息(handleMessage(Message))
2.延时任务 postDelayed(Runnable, long);也是对上述方法的封装
Bundle,携带数据,起到一个Map作用
携带数据的方法putXXX();
获取数据的方法getXXX();
Intent类详解:
可携带额外的数据,实质上还是通过Bundle来实现的,函数: putExtra(String name, boolean value)...等基本类型和数组
putExtras(Intent src), putExtras(Bundle extras)
获取Intent携带的数据,getXXXExtra(String name, XXX default); Object getExtra(String name, Object defaultValue); Bundle getExtras()
---------------------------------------------------------------------------------------------------------------------------------
Service
1.开发Service的步骤:1.定义一个继承Service的子类。2.在AndroidManifest.xml文件中配置该Service
2.生命周期:
IBinder onBind(Intent intent) 应用程序与Service通信的媒介
onCreate() ,Service创建时调用
onDestroy() ,被关闭前调用
StartCommand(Intent, int flags, int startld) ,应用程序调用startService时调用
onUnbind() 所有应用程序都断开时,调用
3.两种启动方法及其区别。通过Context的 startService(); bindService();
不过,如果需要与Service通信,应该调用bindService(Intent service, ServiceConnection conn, int flags);
通过ServiceConnection对象的onServiceConnected(ComponetName name, IBinder service) 的service进行通信。
在需要与Service通信的模块中添加ServiceConnection,一般是Activity
4.IntentService适合处理耗时较长的任务。他会创建单独的worker线程来处理onHandleIntent()方法实现的代码。完成后会自动停止。
只需要实现onHandleIntent(Intent intent)方法。
--------------------------------------------------------------------------------------------------------------------------------
BroadcastReceiver,
1.发送广播。(1) 创建需要启动的相应的Intent (2) 调用Context的sendBroadcast()或sendOrderedBroadcast()方法
2.接受广播。重写BroadcastReceiver的onReceive(Context context, Intent intent) 方法。
匹配 IntentFilter有两种方法,都是通过IntentFilter
带代码中registerReceiver(receive, filter)
在配置文件中加<intent-filter>
---------------------------------------------------------------------------------------------------------------------------------
0 0
- 学习php总结(一)
- jabber学习总结一
- OpenMP学习总结一
- iptables学习总结(一)
- oracle学习总结(一)
- 学习OpenGL总结一
- 雅思学习总结(一)
- gstreamer学习总结一
- GSM学习总结《一》
- linux学习总结一
- C++学习总结(一)
- hadoop学习总结一
- ibatis学习总结一
- Python学习总结(一)
- MINIGUI学习总结一
- Html学习总结一
- JavaScript学习总结一
- UIP 学习总结一
- Fijkstra算法C语言版本和MATLAB版本
- 最长公共临时文档7
- 8/8
- hd 2153 仙人球的残影
- Unity3D深入浅出 - 光源组件(Light)
- 学习总结一
- 计算机经典书籍
- 字符串中字符加上该字符出现的次数
- (八)8天快速掌握Android视频教程_短信发送器
- hdu 1698 线段树 成段更新 lazy
- 五类面试难题应对法则
- 数列通项的求法(二)
- usb驱动 笔记1
- hdu-oj 1407 测试你是否和LTC水平一样高