学习总结一

来源:互联网 发布:网络老男孩教程 编辑:程序博客网 时间: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>


---------------------------------------------------------------------------------------------------------------------------------



















0 0