zoukankan      html  css  js  c++  java
  • ui 集合

    引用:http://justsee.iteye.com/blog/985962

    对话框通知(Dialog Notification)


     

    当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成。

    对话框和菜单一样,都是由Activity统一管理的,我们只要重新实现onCreateDialog(int id)传近来的不同的对话id,初始化并返回相应的对话框。Activity会将所有你已经初始化的对话框保存,下次呼出对话框的时候不会重新初始化。因此当需要动态更新我们的对话框时,就需要重新实现onPrepareDialog(int id,Dialog dialog)方法。

    下面代码将打开一个对话框:

    Java代码  收藏代码
    1. new AlertDialog.Builder(this)  
    2.         .setTitle("zyj标题")  
    3.         .setCancelable(false//设置不能通过“后退”按钮关闭对话框  
    4.         .setMessage("zyj浏览我的bolg?")  
    5.         .setPositiveButton("确认",new DialogInterface.OnClickListener(){  
    6.                     public void onClick(DialogInterface dialoginterface, int i){  
    7.                     Uri uri = Uri.parse("http://justsee.iteye.com/");//打开链接  
    8.                     Intent intent = new Intent(Intent.ACTION_VIEW, uri);  
    9.                     startActivity(intent);  
    10.                 }  
    11.         })  
    12.         .setNegativeButton("取消"new DialogInterface.OnClickListener() {  
    13.                      public void onClick(DialogInterface dialog, int id) {  
    14.                              dialog.cancel();  
    15.                       }  
    16.             })  
    17.          .show();//显示对话框  

     上面代码采用的是一个链式调用,像setTitle()、setMessage()这些方法,他们的返回值都是当前对话框对象。

    单选框(RadioButton)


    在radio.xml中:

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout  
    3.   xmlns:android="http://schemas.android.com/apk/res/android"  
    4.    android:orientation="vertical"  
    5.   android:layout_width="match_parent"  
    6.   android:layout_height="match_parent">  
    7.   <RadioGroup android:id="@+id/radioGroup"  
    8.         xmlns:android="http://schemas.android.com/apk/res/android"  
    9.         android:layout_width="wrap_content" android:layout_height="wrap_content">  
    10.         <RadioButton android:id="@+id/small" android:layout_width="wrap_content"  
    11.             android:layout_height="wrap_content" android:text="small" />  
    12.         <RadioButton android:id="@+id/middle"  
    13.             android:layout_width="wrap_content" android:layout_height="wrap_content"  
    14.             android:text="middle" />  
    15.         <RadioButton android:id="@+id/big" android:layout_width="wrap_content"  
    16.             android:layout_height="wrap_content" android:text="big" />  
    17.     </RadioGroup>  
    18. </LinearLayout>  

     在RadioButtonActivity中:

    ......

    // xml实现
      setContentView(R.layout.radio);
      RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
      radioGroup.check(R.id.middle);// 设置成默认选项
      Log.i(TAG,
        "默认选中的是:"
          + ((RadioButton) this.findViewById(radioGroup
            .getCheckedRadioButtonId())).getText()
            .toString());
      radioGroup
        .setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
         public void onCheckedChanged(RadioGroup group, int checkedId) {
          RadioButton radioButton = (RadioButton) findViewById(checkedId);
          Log.i(TAG, String.valueOf(radioButton.getText()));
         }
        });

    /*

    使用到RadioGroup和RadioButton(单选框),RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框能被选中。(例子代码请见下方备注栏)
     RadioGroup.check(R.id.dotNet);将id名为dotNet的单选框设置成选中状态。
    (RadioButton) findViewById(radioGroup.getCheckedRadioButtonId());//获取被选中的单选框。
    RadioButton.getText();//获取单选框的值
    调用setOnCheckedChangeListener()方法,处理单选框被选择事件,把RadioGroup.OnCheckedChangeListener实例作为参数传入

    */

     在RadioButtonActivity中:

    final String[] items = { "海", "陆", "空" };
      new AlertDialog.Builder(this).setTitle("选择军队")
        .setItems(items, new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int item) {
          Toast.makeText(getApplicationContext(), items[item],
            Toast.LENGTH_SHORT).show();
         }
        }).show();// 显示对话框 

     在RadioButtonActivity中:

    final String[] itemsa = { "红", "黄", "灯" };
      new AlertDialog.Builder(this)
        .setTitle("选择灯颜色")
        // setSingleChoiceItems()的第二个参数是设置默认选项,选项索引从0开始,-1代表不选择任何选项。
        .setSingleChoiceItems(itemsa, 1,
          new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int item) {
            Toast.makeText(getApplicationContext(),itemsa[item], Toast.LENGTH_SHORT).show();dialog.cancel();
           }
          }).show();
     多选框(CheckBox)


    checkbox.xml界面

     

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout  
    3.   xmlns:android="http://schemas.android.com/apk/res/android"  
    4.   android:layout_width="wrap_content"  
    5.   android:layout_height="wrap_content">  
    6.   <CheckBox android:id="@+id/checkboxjava"  
    7.     android:layout_width="wrap_content"  
    8.     android:layout_height="wrap_content"  
    9.     android:text="java" />  
    10.   <CheckBox android:id="@+id/checkboxdotNet"  
    11.     android:layout_width="wrap_content"  
    12.     android:layout_height="wrap_content"  
    13.     android:text="dotNet" />  
    14.   <CheckBox android:id="@+id/checkboxphp"  
    15.     android:layout_width="wrap_content"  
    16.     android:layout_height="wrap_content"  
    17.     android:text="PHP" />  
    18.     <Button android:id="@+id/checkboxButton"  
    19.     android:layout_width="fill_parent"  
    20.     android:layout_height="wrap_content"  
    21.     android:text="获取值" />  
    22. </LinearLayout>  

     

     

      CheckBoxActivity中

     

    Java代码  收藏代码
    1. ............................  
    2. public class CheckBoxActivity extends Activity {  
    3.     private static final String TAG = "CheckBoxActivity";  
    4.     private List<CheckBox> checkboxs = new ArrayList<CheckBox>();  
    5.   
    6.     @Override  
    7.     protected void onCreate(Bundle savedInstanceState) {  
    8.         // TODO Auto-generated method stub  
    9.         super.onCreate(savedInstanceState);  
    10. /*      每个多选框都是独立的,可以通过迭代所有多选框,然后根据其状态是否被选中再获取其值。 
    11.          CheckBox.setChecked(true);//设置成选中状态。 
    12.          CheckBox.getText();//获取多选框的值 
    13.          调用setOnCheckedChangeListener()方法,处理多选框被选择事件,把CompoundButton.OnCheckedChangeListener实例作为参数传入*/  
    14.         setContentView(R.layout.checkbox);  
    15.         checkboxs.add((CheckBox) findViewById(R.id.checkboxdotNet));  
    16.         checkboxs.add((CheckBox) findViewById(R.id.checkboxjava));  
    17.         checkboxs.add((CheckBox) findViewById(R.id.checkboxphp));  
    18.         checkboxs.get(1).setChecked(true);// 设置成选中状态  
    19.         for (CheckBox box : checkboxs) {  
    20.             box.setOnCheckedChangeListener(listener);  
    21.         }  
    22.         Button button = (Button) findViewById(R.id.checkboxButton);  
    23.         button.setOnClickListener(new View.OnClickListener() {  
    24.             @Override  
    25.             public void onClick(View v) {  
    26.                 List<String> values = new ArrayList<String>();  
    27.                 for (CheckBox box : checkboxs) {  
    28.                     if (box.isChecked()) {  
    29.                         values.add(box.getText().toString());  
    30.                     }  
    31.                 }  
    32.                 Toast.makeText(CheckBoxActivity.this, values.toString(), 1)  
    33.                         .show();  
    34.             }  
    35.         });  
    36. }  
    37.   
    38.     CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {  
    39.         @Override  
    40.         // isChecked表示是否被选中  
    41.         public void onCheckedChanged(CompoundButton buttonView,  
    42.                 boolean isChecked) {  
    43.             CheckBox checkBox = (CheckBox) buttonView;  
    44.             Log.i(TAG,  
    45.                     "isChecked=" + isChecked + ",value=" + checkBox.getText());// 输出单选框的值  
    46.         }  
    47.     };  
    48.       
    49. }  

      

     CheckBoxActivity中

    Java代码  收藏代码
    1. //多选项列表对话框  
    2.         final String[] items = {"java"".net""php"};  
    3.         new AlertDialog.Builder(this).setCancelable(false)  
    4.         .setTitle("选择语言")  
    5.         .setMultiChoiceItems(items, new boolean[]{false,true,false}, new DialogInterface.OnMultiChoiceClickListener() {  
    6.             @Override  
    7.             public void onClick(DialogInterface dialog, int which, boolean isChecked) {  
    8.                 if(isChecked){  
    9.                 Toast.makeText(getApplicationContext(), items[which],   
    10.                     Toast.LENGTH_SHORT).show();  
    11.                 }  
    12.                 }  
    13.             })  
    14.         .setPositiveButton("确认",  
    15.             new DialogInterface.OnClickListener(){  
    16.             public void onClick(DialogInterface dialoginterface, int i){  
    17.                 dialoginterface.dismiss();//解除对话框  
    18.              }  
    19.         })  
    20.         .show();//显示对话框  

     下拉列表框(Spinner)


     

     在spinner.xml中(图一图二图三用)

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout  
    3.   xmlns:android="http://schemas.android.com/apk/res/android"  
    4.   android:layout_width="fill_parent"  
    5.   android:layout_height="wrap_content">  
    6.   <Spinner android:id="@+id/spinner"  
    7.     android:layout_height="wrap_content"  
    8.     android:layout_width="fill_parent"/>  
    9. </LinearLayout>  

     stylespinner.xml中(图三用)

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <TextView xmlns:android="http://schemas.android.com/apk/res/android"  
    3.    android:id="@+id/contentTextView"  
    4.     android:layout_width="fill_parent"   
    5.     android:layout_height="wrap_content"   
    6.     android:background="#F4FDFF"  
    7.     />  

     SpinnerActivity中(图一图二图三用)

    Java代码  收藏代码
    1. public class SpinnerActivity extends Activity {  
    2.     private static final String TAG = "SpinnerActivity";  
    3.   
    4.     @Override  
    5.     public void onCreate(Bundle savedInstanceState) {  
    6.         super.onCreate(savedInstanceState);  
    7.         setContentView(R.layout.spinner);  
    8.           
    9.         /*// 第二个参数为下拉列表框每一项的界面样式,该界面样式由Android系统提供,当然您也可以自定义 
    10.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    11.                 android.R.layout.simple_spinner_item); 
    12.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//换一种下拉框的式样 
    13.         adapter.add("java"); 
    14.         adapter.add("dotNet"); 
    15.         adapter.add("php"); 
    16.         Spinner spinner = (Spinner) findViewById(R.id.spinner); 
    17.         spinner.setAdapter(adapter); 
    18. //      spinner.setSelection(0, false); 
    19.         spinner.setSelection(2);//设定默认值 
    20.         spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    21.             @Override 
    22.             public void onItemSelected(AdapterView<?> adapterView, View view, 
    23.                     int position, long id) { 
    24.                 Spinner spinner = (Spinner) adapterView; 
    25.                 String itemContent = (String) adapterView 
    26.                         .getItemAtPosition(position); 
    27.                 Toast.makeText(getApplicationContext(), itemContent,Toast.LENGTH_SHORT).show(); 
    28.             } 
    29.  
    30.             @Override 
    31.             public void onNothingSelected(AdapterView<?> view) { 
    32.                 Log.i(TAG, view.getClass().getName()); 
    33.             } 
    34.         });*/  
    35.         /////////////////////////////采用javabean作为Adapter元素(图二)///////////////////////////////////////////////  
    36.     /*   ArrayAdapter<Person> adapter = new ArrayAdapter<Person>(this, android.R.layout.simple_spinner_item); 
    37.             adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    38.             adapter.add(new Person(12, "李明")); 
    39.             adapter.add(new Person(100, "李明")); 
    40.             adapter.add(new Person(62, "张天")); 
    41.             Spinner spinner = (Spinner) findViewById(R.id.spinner); 
    42.             spinner.setAdapter(adapter); 
    43.             spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    44.         @Override 
    45.         public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { 
    46.             Spinner spinner = (Spinner)adapterView; 
    47.             Person person = (Person)adapterView.getItemAtPosition(position); 
    48.             Toast.makeText(getApplicationContext(), person.getId().toString(),Toast.LENGTH_SHORT).show(); 
    49.         } 
    50.         @Override 
    51.         public void onNothingSelected(AdapterView<?> view) { 
    52.             Log.i(TAG,  view.getClass().getName()); 
    53.         } 
    54.             });*/  
    55.         /////////////////////////////自定义选项界面样式(图三)///////////////////////////////////////////////  
    56.            //第二个参数为layout文件在R文件的id,第三个参数为TextView在layout文件的id  
    57.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.stylespinner, R.id.contentTextView);  
    58.         adapter.add("java");  
    59.         adapter.add("dotNet");  
    60.         adapter.add("php");  
    61.         Spinner spinner = (Spinner) findViewById(R.id.spinner);  
    62.         spinner.setAdapter(adapter);  
    63.         spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
    64.     @Override  
    65.     public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {  
    66.         Spinner spinner = (Spinner)adapterView;  
    67.         String itemContent = (String)adapterView.getItemAtPosition(position);  
    68.         Toast.makeText(getApplicationContext(), itemContent,Toast.LENGTH_SHORT).show();  
    69.     }  
    70.     @Override  
    71.     public void onNothingSelected(AdapterView<?> view) {  
    72.         Log.i(TAG,  view.getClass().getName());  
    73.     }  
    74.         });  
    75.   
    76.     }  
    77. }  

     拖动条(SeekBar)

     

    seekbar.xml

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout  
    3.   xmlns:android="http://schemas.android.com/apk/res/android"  
    4.   android:layout_width="fill_parent"  
    5.   android:layout_height="fill_parent"  
    6.   android:orientation="vertical">  
    7.   <SeekBar  
    8.     android:id="@+id/seekBar"  
    9.     android:layout_height="wrap_content"  
    10.     android:layout_width="fill_parent"/>  
    11.       
    12.     <Button android:id="@+id/seekBarButton"  
    13.     android:layout_height="wrap_content"  
    14.     android:layout_width="wrap_content"  
    15.     android:text="获取值"  
    16.     />  
    17. </LinearLayout>  

     SeekBarAvtivity中

    Java代码  收藏代码
    1. private SeekBar seekBar;  
    2.     @Override  
    3.     public void onCreate(Bundle savedInstanceState) {  
    4.         super.onCreate(savedInstanceState);  
    5.         setContentView(R.layout.seekbar);  
    6.         seekBar = (SeekBar) findViewById(R.id.seekBar);  
    7.         seekBar.setMax(100);//设置最大刻度,即0到99  
    8.         seekBar.setProgress(30);//设置当前刻度  
    9.         seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {  
    10.             @Override  
    11.             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {  
    12.                 Log.v("onProgressChanged()", String.valueOf(progress) + ", " + String.valueOf(fromTouch));  
    13.             }  
    14.             @Override  
    15.             public void onStartTrackingTouch(SeekBar seekBar) {//开始拖动  
    16.                 Log.v("onStartTrackingTouch()", String.valueOf(seekBar.getProgress()));  
    17.             }  
    18.             @Override  
    19.             public void onStopTrackingTouch(SeekBar seekBar) {//结束拖动  
    20.                 Log.v("onStopTrackingTouch()", String.valueOf(seekBar.getProgress()));  
    21.             }  
    22.         });  
    23.         Button button = (Button)this.findViewById(R.id.seekBarButton);  
    24.         button.setOnClickListener(new View.OnClickListener() {            
    25.     @Override  
    26.     public void onClick(View v) {  
    27.     Toast.makeText(getApplicationContext(), String.valueOf(seekBar.getProgress()), 1).show();  
    28.     }  
    29.          });   
    30.     }  

     菜单(Menu)

     

    ·重写Activity的onCreateOptionsMenu(Menu menu)方法,该方法用于创建选项菜单,在用户按下手机的“Menu”按钮时就会显示创建好的菜单,在onCreateOptionsMenu(Menu menu)方法内部可以调用Menu.add()方法实现菜单的添加。

    在第一次初始化了选项菜单后,如果我们需要动态更改选项菜单的话,则需要重新实现onPrepareOptionsMenu()回调方法,他会在每次显示选项菜单之前调用。
    ·重写Activity的onMenuItemSelected()方法,该方法用于处理菜单被选择事件

    在MainActivity中:

    Java代码  收藏代码
    1. private static final int MENU_ADD = Menu.FIRST;  
    2. private static final int MENU_UPDATE = Menu.FIRST + 1;   
    3.   
    4. ...............................................................  
    5. ...............................................................  
    6.  @Override  
    7.     public boolean onCreateOptionsMenu(Menu menu) {  
    8.     menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "添加");<span style="color: #ff0000;">//参数:组ID,菜单项ID,排列顺序,显示标题 </span>   
    9.     menu.add(Menu.NONE, MENU_UPDATE, Menu.NONE, "更新");  
    10.     return super.onCreateOptionsMenu(menu);  
    11.     }  
    12.     @Override  
    13.     public boolean onMenuItemSelected(int featureId, MenuItem item) {  
    14.     switch (item.getItemId()) {  
    15.       case MENU_ADD:  
    16.            Log.i(TAG, "add was selected");  
    17.            return true;  
    18.       case MENU_UPDATE:  
    19.            Log.i(TAG, "update was selected");  
    20.            return true;  
    21.       default:  
    22.               return super.onMenuItemSelected(featureId, item);  
    23.       }  
    24.     }     

    子菜单(SubMenu)

     

    Java代码  收藏代码
    1. @Override  
    2.    public boolean onCreateOptionsMenu(Menu menu) {  
    3. menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "添加").setCheckable(true);    
    4. menu.add(Menu.NONE, MENU_UPDATE, Menu.NONE, "更新");  
    5. SubMenu sub = menu.addSubMenu("搜索");//子菜单  
    6.   <span style="color: #ff0000;"> sub.setIcon(android.R.drawable.ic_menu_search);  
    7.    sub.add(Menu.NONE,Menu.FIRST+8,Menu.NONE,"本地");  
    8.    sub.add(Menu.NONE,Menu.FIRST+9,Menu.NONE,"网络");</span>  
    9. menu.add(Menu.NONE, Menu.FIRST+2, Menu.NONE, "保存").setIcon(android.R.drawable.ic_menu_save);  
    10. menu.add(Menu.NONE, Menu.FIRST+3, Menu.NONE, "删除").setIcon(android.R.drawable.ic_menu_delete);  
    11. menu.add(Menu.NONE, Menu.FIRST+4, Menu.NONE, "增加").setIcon(android.R.drawable.ic_menu_add);  
    12. menu.add(Menu.NONE, Menu.FIRST+5, Menu.NONE, "电话").setIcon(android.R.drawable.ic_menu_call);  
    13. menu.add(Menu.NONE, Menu.FIRST+6, Menu.NONE, "电话1");  
    14. menu.add(Menu.NONE, Menu.FIRST+7, Menu.NONE, "电话2");  
    15.   
    16. return super.onCreateOptionsMenu(menu);  
    17.    }  

    上下文菜单(ContextMenu)

    上下文菜单的初始化回调方法并不只调用一次,它会在每次呼出上下文菜单时被调用(public void onCreateContextMenu(ContextMenu menu, View v,
    ContextMenuInfo menuInfo) )。

    方法一:注册

     

    Java代码  收藏代码
    1. ...  
    2. ...  
    3. ...  
    4.  registerForContextMenu(findViewById(R.id.contextMenu));//注册上下文菜单  
    5. ...  
    6. ...  
    7. @Override   
    8.     public boolean onContextItemSelected(MenuItem item) {  
    9.         switch (item.getItemId()) {  
    10.           case C_MENU_NEW:  
    11.               //做新建的那些事。  
    12.               break;  
    13.            case C_MENU_OPEN:  
    14.               //做打开的那些事。  
    15.               break;  
    16.           }  
    17.         return super.onContextItemSelected(item);  
    18.     }  
    19.     @Override  
    20.     public void onCreateContextMenu(ContextMenu menu, View v,  
    21.             ContextMenuInfo menuInfo) {  
    22.         menu.setHeaderTitle("这是上下文菜单");  
    23.          menu.add(0, C_MENU_NEW, 0"新建");  
    24.             menu.add(0, C_MENU_OPEN, 0"打开");  
    25.         super.onCreateContextMenu(menu, v, menuInfo);  
    26.     }  
    27.       

     方法二:监听

     

    Java代码  收藏代码
    1. ((Button)this.findViewById(R.id.contextMenu2)).setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {  
    2.           
    3.         @Override  
    4.         public void onCreateContextMenu(ContextMenu menu, View v,  
    5.                 ContextMenuInfo menuInfo) {  
    6.             menu.setHeaderTitle("这是上下文菜单2");  
    7.              menu.add(0, C_MENU_NEW, 0"新建");  
    8.                 menu.add(0, C_MENU_OPEN, 0"打开");  
    9.         }  
    10.     });  

     

    进度对话框(ProgressDialog)

    ·使用代码ProgressDialog.show(ProgressDialogActivity.this, "请稍等", "数据正在加载中...", true);创建并显示一个进度对话框。
    ·调用setProgressStyle()方法设置进度对话框风格。有两种风格:
         ProgressDialog.STYLE_SPINNER 旋体进度条风格 (为默认风格)
         ProgressDialog.STYLE_HORIZONTAL 横向进度条风格

    在MainActivity中:

    Java代码  收藏代码
    1. .........................................................  
    2. private ProgressDialog progressDialog;//进度对话框  
    3.      
    4.      private Runnable finishDialog = new Runnable() {  
    5.          @Override  
    6.          public void run() {             
    7.             progressDialog.dismiss();  
    8.          }  
    9.     };  
    10.     @Override  
    11.     public void onCreate(Bundle savedInstanceState) {  
    12.         progressDialog = ProgressDialog.show(MainActivity.this"请稍等""病毒正在加载中..."true);  
    13.         //开始一条专门处理耗时工作的线程  
    14.         new Thread(new Runnable(){  
    15.             @Override  
    16.             public void run() {  
    17.                try {  
    18.             Thread.sleep(5*1000);//假设这项工作需要5秒才能完成  
    19.           //progressDialog.dismiss();//关闭进程对话框  
    20.             runOnUiThread(finishDialog);//要求运行在UI线程  
    21.            } catch (InterruptedException e) {}  
    22.             }  
    23.         }).start();     
    24. ................................................................  

     创建进度条(ProgressBar)


     在布局xml文件中添加进度条代码:
    <ProgressBar android:layout_width="fill_parent" android:layout_height="20px"
        style="?android:attr/progressBarStyleHorizontal"
        android:id="@+id/downloadbar"/>

    在代码中操作进度条:
    ProgressBar.setMax(100);//设置总长度为100
    ProgressBar.setProgress(0);//设置已经开启长度为0,假设设置为50,进度条将进行到一半
    一般用于下载的进度条

     

     Android中的通知(Notification)

    通知用于在状态栏显示消息,消息到来时以图标方式表示,如下:



     在MainActivity中:

    Java代码  收藏代码
    1. ..................  
    2.  //获取通知管理器  
    3.         NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
    4.         int icon = android.R.drawable.stat_notify_chat;  
    5.         long when = System.currentTimeMillis();  
    6.         //新建一个通知,指定其图标和标题  
    7.         Notification notification = new Notification(icon, null, when);//第一个参数为图标,第二个参数为标题,第三个为通知时间  
    8.         Intent openintent = new Intent(this, CodeUIActivity.class);  
    9.         PendingIntent contentIntent = PendingIntent.getActivity(this0, openintent, 0);//当点击消息时就会向系统发送openintent意图  
    10.         notification.setLatestEventInfo(this"标题""内容", contentIntent);  
    11.         mNotificationManager.notify(0, notification);  
    12.   
    13. ..................  

    DatePicherDialog


     

    Java代码  收藏代码
    1. new DatePickerDialog(this,  
    2.                     new OnDateSetListener() {  
    3.                           
    4.                         @Override  
    5.                         public void onDateSet(DatePicker v, int y,  
    6.                                 int m, int d) {  
    7.                             /* 
    8.                              * 这是设置好日期后的回调函数, 
    9.                              * 可以根据设置的内容更新用户界面 
    10.                              * 或者系统时间。 
    11.                              */  
    12.                         }  
    13.                      }, c.get(Calendar.YEAR),  
    14.                     c.get(Calendar.MONTH),   
    15.                     c.get(Calendar.DAY_OF_MONTH))  

    TimePicherDialog

     

    Java代码  收藏代码
    1. new TimePickerDialog(this,  
    2.                     new  OnTimeSetListener() {  
    3.                         @Override  
    4.                         public void onTimeSet(TimePicker arg0, int arg1, int arg2) {  
    5.                              /* 
    6.                              * 这是设置好时间后的回调函数, 
    7.                              * 可以根据设置的内容更新用户界面 
    8.                              * 或者系统时间。 
    9.                              */  
    10.                               
    11.                         }  
    12.                     }, c.get(Calendar.HOUR_OF_DAY),  
    13.                     c.get(Calendar.MINUTE),   
    14.                     false);     

    AnalogClock     和   DigitalClock

     

    Xml代码  收藏代码
    1. <AnalogClock    
    2.    android:layout_width="wrap_content"   
    3.    android:layout_height="wrap_content" />  
    4. lt;DigitalClock    
    5.    android:layout_width="wrap_content"   
    6.    android:layout_height="wrap_content" />  

    ToggleButton

     

    Xml代码  收藏代码
    1. <ToggleButton   
    2.   android:layout_width="wrap_content"  
    3.   android:layout_height="wrap_content" />  

    在Activity中编程实现UI   

    在CodeUIActivity中:

    Java代码  收藏代码
    1. TextView textView = new TextView(this);  
    2.         textView.setText(R.string.code_UI);  
    3.         textView.setId(90);  
    4.         LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(  
    5.                 ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);  
    6.         linearLayout.addView(textView, params);  
    7.           
    8.         params = new LinearLayout.LayoutParams(  
    9.                 ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);  
    10.         setContentView(linearLayout, params);  

    用html作为UI

    Android通过WebView实现了JS代码与Java代码互相通信的功能,使的android软件的界面开发也可以采用HTML网页技术。



     主要代码

    /assets/index.html

    Html代码  收藏代码
    1. <script type="text/javascript">  
    2.     function show(jsondata){//[{id:21,name:"xxx",mobile:"12332213"},{}]  
    3.             var jsonobjs = eval(jsondata);  
    4.             var table = document.getElementById("personTable");  
    5.             for(var y=0; y<jsonobjs.length; y++){  
    6.                 var tr = table.insertRow(table.rows.length); //添加一行  
    7.                 //添加三列  
    8.                 var td1 = tr.insertCell(0);  
    9.                 var td2 = tr.insertCell(1);  
    10.                 td2.align = "center";  
    11.                 var td3 = tr.insertCell(2);  
    12.                 //设置列内容和属性  
    13.                 td1.innerHTML = jsonobjs[y].id;   
    14.                 td2.innerHTML = jsonobjs[y].name;   
    15.                 td3.innerHTML = "<a href='javascript:cactus.call(\""+ jsonobjs[y].mobile+ "\")'>"+ jsonobjs[y].mobile+ "</a>";   
    16.             }  
    17.     }  
    18. </script>  
    19. </head>  
    20. <!-- js代码通过webView调用其插件中的java代码 -->  
    21. <body onload="javascript:cactus.personlist()">  
    22.    <table border="0" width="100%" id="personTable" cellspacing="0">  
    23.         <tr>  
    24.             <td width="20%">编号</td>  
    25.             <td width="30%" align="center">姓名</td>  
    26.             <td >电话</td>  
    27.         </tr>  
    28.     </table>  
    29.     <a href="javascript:window.location.reload()">刷新</a>  
    30. </body>  

    HtmlActivity.java

    Java代码  收藏代码
    1. private WebView webView;  
    2.     private Handler handler = new Handler();// 异步使用  
    3.   
    4.     @Override  
    5.     protected void onCreate(Bundle savedInstanceState) {  
    6.         // TODO Auto-generated method stub  
    7.         super.onCreate(savedInstanceState);  
    8.         setContentView(R.layout.htmlui);  
    9.   
    10.         webView = (WebView) this.findViewById(R.id.webview);  
    11.         webView.getSettings().setJavaScriptEnabled(true);// 允许JavaScript  
    12.         webView.getSettings().setSaveFormData(false);  
    13.         webView.getSettings().setSavePassword(false);  
    14.         webView.getSettings().setSupportZoom(false);// 不准改变大小  
    15.         webView.addJavascriptInterface(new CactusJavaScript(this, handler),  
    16.                 "cactus");// addJavascriptInterface方法中要绑定的Java对象  
    17.         webView.setWebChromeClient(new CactusWebClient());  
    18.         webView.loadUrl("file:///android_asset/index.html");  
    19.     }  
    20.   
    21.     private final class CactusWebClient extends WebChromeClient {  
    22.         // WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出  
    23.         @Override  
    24.         public boolean onJsAlert(WebView view, String url, String message,  
    25.                 JsResult result) {  
    26.             new AlertDialog.Builder(HtmlActivity.this)  
    27.                     .setTitle("提示信息")  
    28.                     .setMessage(message)  
    29.                     .setPositiveButton("确定",  
    30.                             new DialogInterface.OnClickListener() {  
    31.                                 public void onClick(  
    32.                                         DialogInterface dialoginterface, int i) {  
    33.                                 }  
    34.                             }).show();  
    35.             return true;  
    36.         }  
    37.     }  

    CactusJavaScript.java

    Java代码  收藏代码
    1. private Context context;  
    2.     private WebView webView;  
    3.     private Handler handler;  
    4.     public CactusJavaScript(Context context, Handler handler) {  
    5.         super();  
    6.         this.context = context;  
    7.         this.webView = (WebView) ((Activity)context).findViewById(R.id.webview);  
    8.         this.handler = handler ;  
    9.     }  
    10.   
    11.     public void personlist() {  
    12.         handler.post(new Runnable() {// Handler与调用者处于同一线程,如果Handler里面做耗时的动作,调用者线程会阻塞  
    13.             public void run() {  
    14.                 webView.loadUrl("javascript:show('" + getPersonJson()  
    15.                         + "')");  
    16.             }  
    17.         });  
    18.     }  
    19.   
    20.     public void call(final String phone) {  
    21.         handler.post(new Runnable() {  
    22.             public void run() {  
    23.                 context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:"  
    24.                         + phone)));  
    25.                   
    26.             }  
    27.         });  
    28.     }  
    29.   
    30.     public  String getPersonJson() {// 生成json字符串  
    31.         try {  
    32.             List<Person> persons=getContacts();  
    33.             JSONArray jsonArray=new JSONArray();  
    34.             for (Person person : persons) {  
    35.                 JSONObject jsonObject=new JSONObject();  
    36.                 jsonObject.put("id", person.getId());  
    37.                 jsonObject.put("name", person.getName());  
    38.                 jsonObject.put("mobile", person.getMobile());  
    39.                 jsonArray.put(jsonObject);  
    40.             }  
    41.             return jsonArray.toString();  
    42.         } catch (JSONException e) {  
    43.             e.printStackTrace();  
    44.         }  
    45.         return "";  
    46.     }  
    47.       
    48.   
    49.     public List<Person> getContacts(){  
    50.          List<Person>  persons = new ArrayList<Person>();  
    51.          persons.add(new Person(78"张飞""1384949494"));  
    52.          persons.add(new Person(12"李静""194505555"));  
    53.          persons.add(new Person(89"赵薇""1785959595"));  
    54.         return persons;  
    55.     }  

     

     

  • 相关阅读:
    【原】 POJ 1012 Joseph 约瑟夫 解题报告
    【原】 POJ 1001 Exponentiation 大整数乘法 解题报告
    POJ——1517
    毕业了,校园里走走看看——华中科技大学
    毕业答辩后
    CV编程常用的获取鼠标圈定区域的方法
    送走了GB
    POJ——2546
    奥巴马在YY21#524
    POJ——3517
  • 原文地址:https://www.cnblogs.com/sode/p/2199668.html
Copyright © 2011-2022 走看看