android-常用部件

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 version="1.0" encoding="utf-8"?>
<resources>
     <style 
         name="mystyles_textView"
         >
         <item name="android:textColor">#FF0000</item>
     </style>
</resources>

   调用方式:在xml文件中

<TextView 
      android:id="@+id/song"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      style="@style/mystyles_textView"
      />

 

主题(针对窗口):

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style 
        name="mytheme"
        >
        <item name="android:textColor">#FF0000</item>
        <item name="android:windowNoTitle">true</item>
           <item name="android:windowBackground">@drawable/sea</item>
    </style>
</resources>

 

调用方式:在清单文件中

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" 
        android:theme="@style/mytheme"
        >

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。