1.创建Dialog()
android提供了4种类型的Dialog:AlertDialog,ProgressDialog,DatePickerDialog,TimePickerDialog.
1.0 AlertDialog
1.1 调用dialog的步骤(当用户点击某个item时)
用showDialog方法调用创建Dialog的方法(onCreateDialog方法)
@Override public boolean onOptionsItemSelected(MenuItem item) { //对option菜单的选项选中后进行操作 int id=item.getItemId(); //匹配选中item的id,并调用showDialog方法出入id, //创建dialog由Activity的onCreateDialog方法实现 switch(id) { case OPTON_ITEM_EXIT: showDialog(OPTON_ITEM_EXIT); break; case OPTON_ITEM_SCAN: showDialog(OPTON_ITEM_SCAN); break; } return true ; } @Override public boolean onContextItemSelected(MenuItem item) { //对context菜单的选项选中后进行操作 int id=item.getItemId(); switch(id) { case CONTEXT_OPTION_DELETE: showDialog(CONTEXT_OPTION_DELETE); break; case CONTEXT_OPTION_PROPERTY: showDialog(CONTEXT_OPTION_PROPERTY); break; } return true; }
1.2 创建dialog的步骤:
在Activity的中覆盖onCreateDialog方法,id为Activity的item的常量值
private static final int OPTON_ITEM_SCAN = 101;private static final int CONTEXT_OPTION_DELETE = 100;private static final int CONTEXT_OPTION_PROPERTY = 0;@Override protected Dialog onCreateDialog(int id) { //对传入的item的id进行匹配并创建相应的Dialog //使用AlertDialog.Builder为当前context创建Dialog //1.标题:setTitle //2.两个按钮:一个消极的按钮:setNegativeButton,一个积极的按钮:setPositiveButton switch(id) { case CONTEXT_OPTION_DELETE : return new AlertDialog.Builder(this) .setTitle(R.string.delete_message).setNegativeButton(R.string.button_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //进行删除操作 //通过contentResolver和contentprovider进行删除操作 ContentResolver resolver=getContentResolver(); //获取选中歌曲的id int songid=cursor.getInt (cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID)); //获取歌曲的data的目录 String path=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); //从数据库中获得指定id歌曲的uri的记录, //ContentUris是操作uri类, //它(以自己的方式:content://authority/path/id)可以访问数据库某条或某行记录 Uri uri=ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, songid); //删除歌曲在数据库中的记录 resolver.delete(uri, null, null); //删除在SD卡中的文件 File f=new File(path); if(f.exists()) f.delete(); //通知主界面,该歌曲已经被删除 Toast.makeText(MusicDemoActivity.this,"歌曲已经删除",100).show(); } } ).setPositiveButton(R.string.button_cancel, new OnClickListener() { public void onClick(DialogInterface dialog, int which) { //取消时则销毁该Dialog,可以是Activity的dismissDialog(show)方法 //或是dialog对象的dismiss方法 dismissDialog(CONTEXT_OPTION_DELETE); } } ).create(); case CONTEXT_OPTION_PROPERTY: break; case OPTON_ITEM_EXIT: break; case OPTON_ITEM_SCAN: break; } return null; }
2.通知用户
Toast:提示用户一小段文本信息,无法和用户交互
Notification:在状态栏提示用户,用户可以和Notification交互,如短信来了
Dialog:在当前Activity前面弹出小窗口,代替Activity接收用户输入。
3.处理用户输入
android为处理用户输入提供了多种方式,其核心机制是使用java的接口回调(call back)机制。
View.View类中定义了一系列的内嵌监听器类,包括:
View.OnClickListener:监听点击动作
View.OnLongClickListener:监听长按动作
View.OnKeyListener:监听键盘按键动作
View.OnTouchListener:监听按下,释放,或者移动
View.OnFocusChangeListener:焦点进入,或者离开View
View.OnCreateContextMenuListener :contextmenu创建时,调用
oncreateContextmenu方法
4.样式和主题(style)
为自己的界面(textview的小部件,Windows主窗口)设计自己的style(样式和主题).
样式和主题都是在res/values文件夹下创建android resources xml 文件,
根节点为<resources>,子节点<style>为样式/主题,在values文件夹下,书写方式都是键值对写法,键是属性,值是属性值。
样式(针对某个widget如textview):
调用方式:在xml文件中
主题(针对窗口):
调用方式:在清单文件中