android高级界面
来源:互联网 发布:拍摄淘宝照片背景图片 编辑:程序博客网 时间:2024/06/05 14:47
RadioButton与CheckBox
- RadioGroup 和RadioButton
RadioButton一定要放在RadioGroup
Checked=“true”当按钮选中后
勾选事件监听
OnCheckedChangeListener
练习
石头,剪刀,布
MainActivity.java
import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.RadioButton;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener { TextView tv; Button btn_begin; RadioButton radiobtn[]=new RadioButton[3]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); radiobtn[0] =(RadioButton) findViewById(R.id.radio0); radiobtn[1]=(RadioButton) findViewById(R.id.radio1); radiobtn[2]=(RadioButton) findViewById(R.id.radio2); tv=(TextView) findViewById(R.id.textView1); btn_begin=(Button) findViewById(R.id.btn_begin); btn_begin.setOnClickListener(this); } @Override public void onClick(View v) { //生成随机数 int random=(int) (Math.random()*10+10); new AsyncTask<Integer, Integer, String>() { //后台线程 @Override protected String doInBackground(Integer... params) { int num=params[0]; int i=0; while(i<num){ i++; publishProgress(i%radiobtn.length); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } return radiobtn[i%radiobtn.length].getText().toString(); } protected void onProgressUpdate(Integer... values) { int count=values[0]; radiobtn[count].setChecked(true); }; protected void onPostExecute(String result) { super.onPostExecute(result); tv.setText(result); }; }.execute(random); }}
Activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.android_829_radiobutton.MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="70dp" android:textSize="30sp" android:text="猜拳" /> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="16dp" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="石头" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="剪刀" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="布" /> </RadioGroup> <Button android:id="@+id/btn_begin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/radioGroup1" android:layout_centerHorizontal="true" android:layout_marginTop="27dp" android:text="开始" /></RelativeLayout>
菜单Menu
PopupMenu
MainActivity.java
import android.app.Activity;import android.os.Bundle;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.PopupMenu;import android.widget.PopupMenu.OnMenuItemClickListener;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //创建PopupMenu PopupMenu pop=new PopupMenu(MainActivity.this, v); //解析文件 getMenuInflater().inflate(R.menu.main, pop.getMenu()); //显示 pop.show(); //监听PopupMenu菜单 pop.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { int id=item.getItemId(); if(id==R.id.item2){ finish(); } return false; } }); } }); }}
main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.android_829_menu.MainActivity" > <item android:id="@+id/item0" android:orderInCategory="100" android:showAsAction="never" android:title="登录"/> <item android:id="@+id/item1" android:orderInCategory="100" android:showAsAction="never" android:title="注册"/> <item android:id="@+id/item2" android:orderInCategory="100" android:showAsAction="never" android:title="退出"/></menu>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.android_829_menu.MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="137dp" android:text="Button" /></RelativeLayout>
OptionMenu
点击menu按钮,显示菜单
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); //添加子菜单 SubMenu sub1=menu.addSubMenu("设置"); sub1.add(1,SET_ITEM1,300,"设置声音"); sub1.add(1,SET_ITEM2,400,"设置桌面"); SubMenu sub2=menu.addSubMenu("选择"); sub2.add(1,SET_ITEM3,300,"选择一"); sub2.add(1,SET_ITEM4,400,"选择二"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.item0) { return true; }else if(id==R.id.item1){ finish(); return true; }else if(id==R.id.item2){ return true; } return super.onOptionsItemSelected(item); }
ContextMenu
长按控件,显示菜单
TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView) findViewById(R.id.textView1); //注册tv,当用户长按tv时,触发上下文菜单 registerForContextMenu(tv); } //创建上下文菜单 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); menu.addSubMenu(0, 1, 0, "收藏"); menu.addSubMenu(0, 2, 0, "删除"); Toast.makeText(MainActivity.this, "长按后", Toast.LENGTH_SHORT).show(); } @Override public boolean onContextItemSelected(MenuItem item) { if(item.getItemId() == 1){ Toast.makeText(this, "收藏", Toast.LENGTH_SHORT).show(); }else if(item.getItemId() == 2){ Toast.makeText(this, "删除", Toast.LENGTH_SHORT).show(); } return super.onContextItemSelected(item); }
对话框
对话框是在当前界面弹出的一个小窗口,用于显示重要提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等。一般情况下,用户要与对话框进行交互,然后返回到被遮盖的界面以继续运行当前的应用程序。
AlertDialog常用方法
要创建一个AlertDialog就要用到AlertDialog.Builder中的create()方法
1. setTitle:为对话框设置标题
2. setIcon:为对话框设置图标
3. setMessage:为对话框设置内容
4. setView:为对话框设置自定义样式
5. setItems:设置对话框要显示的一个list
6. setMutiChoiceItems:设置对话框显示一系列的复选框
7. setSingleChoiceItems:设置单选按钮
8. setNeutralButton:普通按钮
9. setPositiveButton:确认按钮
10. setNegativeButton:取消按钮
ProgressDialog
MainActivity.javaimport android.app.Activity;import android.app.ProgressDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button1).setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); findViewById(R.id.button3).setOnClickListener(this); findViewById(R.id.button4).setOnClickListener(this); findViewById(R.id.button5).setOnClickListener(this); findViewById(R.id.button6).setOnClickListener(this); } @Override public void onClick(View v) { int id=v.getId(); if(id==R.id.button1){ //默认对话框 onCreateNormalDialog(); }else if(id==R.id.button2){ //单选按钮对话框 onCreateSingleChoiceItems(); }else if(id==R.id.button3){ //多选按钮对话框 onCreateMutiChoiceItems(); }else if(id==R.id.button4){ //列表按钮对话框 onCreateItems(); }else if(id==R.id.button5){ //自定义对话框 createDialog(); }else if(id==R.id.button6){ CreateProgressDialog(); } } private void CreateProgressDialog() { final ProgressDialog pd=ProgressDialog.show(this, "搜索网络", "请耐心等待..."); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //结束ProgressDialog pd.dismiss(); } }).start(); } private void createDialog() { Builder builder=new Builder(this); builder.setTitle("注册"); //自定义布局 View view =LayoutInflater.from(this).inflate(R.layout.register, null); builder.setView(view); builder.setPositiveButton("确定", null); builder.setNegativeButton("取消", null); builder.create(); builder.show(); } private void onCreateItems() { Builder b=new Builder(this); b.setIcon(R.drawable.ic_launcher); b.setTitle("部门成员列表"); String items[]={"项目经理","策划","测试","美工","程序员"}; b.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.d("Tag", "which="+which); } }); b.create(); b.show(); } private void onCreateMutiChoiceItems() { Builder b=new Builder(this); b.setTitle("爱好"); b.setIcon(R.drawable.ic_launcher); String items[]={"篮球","足球","乒乓球","排球"}; b.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { Log.d("Tag", "which="+which+",isChecked="+isChecked); } }); b.create(); b.show(); } private void onCreateSingleChoiceItems() { Builder builder =new Builder(this); builder.setTitle("请选择性别"); builder.setIcon(R.drawable.ic_launcher); String items[]={"男","女","保密"}; builder.setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.d("Tag", "which="+which); } }); builder.create(); builder.show(); } private void onCreateNormalDialog() { Builder builder=new Builder(this); builder.setTitle("退出"); builder.setIcon(R.drawable.ic_launcher); builder.setMessage("确定要退出吗?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); builder.setNeutralButton("中间", null); builder.setNegativeButton("取消", null); builder.create(); builder.show(); }}
Register.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="输入用户名"> <requestFocus /> </EditText> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" android:hint="输入密码" /> <EditText android:id="@+id/editText3" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" android:hint="输入密码"/></LinearLayout>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.android_829_alertdialog.MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通对话框" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="单选按钮对话框" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="多选按钮对话框" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="列表对话框" /> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定义对话框" /> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="进度条对话框" /> </LinearLayout></RelativeLayout>
PopupWindow
PopupWindow这个类用来实现一个弹出框,可以使用任意布局View作为其内容,这个弹出框悬浮在当前activity之上。
构造PopupWindow
注意:生成一个PopupWindow必须设置三个条件:View contentView,int Width,int height, 少任意一个就不能弹出PopupWindow。
- android高级界面
- Android高级界面组件(1)
- Android高级界面组件(2)
- android高级界面组件之AutoCompleteTextView
- Android学习7--高级界面组件
- Android——高级界面组件
- Android入门开发之高级界面组件
- Android界面编程——Android高级组件
- android 蓝牙设置界面高级选项功能解析
- Android高级界面组件的学习(一)
- Android高级界面组件的学习(二)
- Android高级界面组件的学习(三)
- Android高级应用开发(深入篇) stage3(上)- 高级商用界面开发 学习笔记
- Android高级应用开发(深入篇) stage3(下)- 高级商用界面开发 学习笔记
- 高级界面组件
- J2ME高级界面
- Android界面编程——Android高级UI组件(三)
- 005 高级界面和低级界面
- cvte笔试总结
- 用GDB调试程序(五)
- PAT(A) 101-133-1-2016-03-12 A. Finding Average (20)
- 用GDB调试程序(七)
- Github 上怎样把新 commits 使用在自己的 fork 上?
- android高级界面
- 用GDB调试程序(六)
- Java7源码浅析——对HashMap的理解
- DispatchAction 分派action与Dynimic form 动态表单
- meta标签的应用
- 用GDB调试程序(三)
- 常见错误
- Poedu_计算机基础_lesson06_20160902_函数调用过程 _作业
- poj 1426 Find The Multiple (bfs / dfs)