ui 集合

简介: 引用:http://justsee.iteye.com/blog/985962 对话框通知(Dialog Notification)   当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成。

引用: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.     }  

 

 

相关文章
|
4月前
|
JavaScript
element-ui Cannot read properties of undefined (reading ‘name‘),data中写成集合的形式
element-ui Cannot read properties of undefined (reading ‘name‘),data中写成集合的形式
|
Web App开发 消息中间件 大数据
个人收集的IT技术网站集合,涉及web前后端,大数据,UI设计等。
IT技术网站直通车 个人收集的IT技术网站集合,涉及web前后端,大数据,UI设计等。并持续更新中…… 个人主页 https://liaocan.top 欢迎评论推荐 web后端 spring https://spring.
2500 0
|
Android开发 iOS开发 定位技术
iOS 新特性分列式 之 iOS 6.x - 主要内容:自动布局、集合视图、UI 状态保持
iOS 新特性分列式 之 iOS 6.x - 主要内容:自动布局、集合视图、UI 状态保持 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
1056 0
关于silverlight中如何更新(增删改)集合ItemsSource后更新到UI(Listbox、DataGrid等)
请看微软资料 http://msdn.microsoft.com/zh-cn/library/system.windows.controls.itemscontrol.itemssource%28v=vs.95%29.aspx   具体方案为:将ItermsSource设置为实现 INotifyCollectionChanged 接口的对象,以使集合的更改在 ItemsControl 中反映出来。
940 0
|
11天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
1月前
|
开发框架 JavaScript 前端开发
鸿蒙NEXT开发声明式UI是咋回事?
【10月更文挑战第15天】鸿蒙NEXT的声明式UI基于ArkTS,提供高效简洁的开发体验。ArkTS扩展了TypeScript,支持声明式UI描述、自定义组件及状态管理。ArkUI框架则提供了丰富的组件、布局计算和动画能力。开发者仅需关注数据变化,UI将自动更新,简化了开发流程。此外,其前后端分层设计与编译时优化确保了高性能运行,利于生态发展。通过组件创建、状态管理和渲染控制等方式,开发者能快速构建高质量的鸿蒙应用。
119 3
|
28天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
87 8
|
1月前
|
JavaScript API 开发者
掌握ArkTS,打造HarmonyOS应用新视界:从“Hello World”到状态管理,揭秘鸿蒙UI开发的高效秘诀
【10月更文挑战第19天】ArkTS(ArkUI TypeScript)是华为鸿蒙系统中用于开发用户界面的声明式编程语言,结合了TypeScript和HarmonyOS的UI框架。本文介绍ArkTS的基本语法,包括组件结构、模板和脚本部分,并通过“Hello World”和计数器示例展示其使用方法。
61 1
|
1月前
|
缓存 测试技术 C#
使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题
【10月更文挑战第20天】本文介绍了使用 Radzen Blazor 组件库开发基于 ABP 框架的炫酷 UI 主题的步骤。从准备工作、引入组件库、设计主题、集成到 ABP 框架,再到优化和调试,详细讲解了每个环节的关键点和注意事项。通过这些步骤,你可以打造出高性能、高颜值的应用程序界面。