1.菜单键
这个比较特殊,在menu下定义一个xml,menu节点
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.optionmenudemo.MainActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="设置"/>
<item
android:id="@+id/action_option"
android:orderInCategory="100"
android:showAsAction="never"
android:title="选项"/>
<item
android:id="@+id/action_exit"
android:orderInCategory="100"
android:showAsAction="never"
android:title="退出"/>
</menu>
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mymenu ,menu);
return true;
/*//注意第二个参数,必须设置ID,否则itemSelect里的ID统一分配0,无法区分
menu.add(0,0,0,"Wallpaper");
menu.add(0,1,0,"ManageApp");
menu.add(0,2,0,"System Setting");
return true; */
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id==R.id.action_settings) {
Toast.makeText(this, "即将去设置", 1).show();
}
else if (id==R.id.action_option) {
Toast.makeText(this, "即将去option选单", 1).show();
}
else if (id==R.id.action_exit) {
Toast.makeText(this, "即将退出", 1).show();
}
System.out.println("MainActivity.onOptionsItemSelected()"+id);
return super.onOptionsItemSelected(item);
/*if (id==0) {
Toast.makeText(this, "即将去设置墙纸", 1).show();
}
else if (id==1) {
Toast.makeText(this, "即将去ManageApp", 1).show();
}
else if (id==2) {
Toast.makeText(this, "即将去System Setting", 1).show();
}*/
}
}
2.普通确定、取消框
用了链式写法,注销掉的也可以,另外builder本身就是dialog的子类
public void showDialog1(View v){
/*//属于alertDialog类,参数为context
Builder builder = new Builder(this);
builder.setTitle("Android学习");
builder.setMessage("是否浏览百度");
//第二个参数是一个listener,暂时先置空
builder.setPositiveButton("确认", new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.parse("http://www.baidu.com/");
intent.setData(uri);
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.baidu.com/"));
startActivity(intent);
}});
builder.setNegativeButton("取消", null);
//show出来用户才能看到
builder.show();*/
/* Builder builder = new Builder(this) ;
builder.setTitle("Android学习");
builder.setMessage("是否浏览baidu?");
builder.setPositiveButton("确认", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri =Uri.parse("http://www.baidu.com/");
intent.setData(uri);
//定义的intent里面么有规定type
startActivity(intent);
}
});
builder.setNegativeButton("取消", null);
Dialog dialog = builder.create();
dialog.show(); */
new Builder(this)
.setTitle("Android学习")
.setMessage("是否浏览百度?")
.setPositiveButton("确认", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri =Uri.parse("http://www.baidu.com/");
intent.setData(uri);
//定义的intent里面么有规定type
startActivity(intent);
}
})
.setNegativeButton("取消", null)
.show();
}
3. 列表选择框
public void showDialog2(View v){
final String[] items = {"c","java" ,"c++"};
new Builder(this)
.setTitle("请选择学习的内容")
.setItems(items, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
System.out
.println("MainActivity.showDialog2(...).new OnClickListener() {...}.onClick()"+which);
String choice = items[which];
Toast.makeText(MainActivity.this, choice, 1).show();
}
})
.show();
}
4.列表单选框
public void showDialog3(View v){
final String[] items = {"c","java" ,"c++"};
new Builder(this)
.setTitle("请选择学习的内容")
//第二个参数表示默认选的哪个,-1表示一个都不选
.setSingleChoiceItems(items, -1, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
Toast.makeText(MainActivity.this, items[which], 1).show();
}
})
.show();
}
5.列表多选框
public void showDialog4(View v){
final String[] items = {"c","java" ,"c++"};
new Builder(this)
.setTitle("请选择学习的内容")
//第二个参数表示哪些默认被选上
.setMultiChoiceItems(items, new boolean[]{true,false,true}, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
Toast.makeText(MainActivity.this, items[which], 1).show();
}
}
})
//多选需要确定
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//选完主动关闭
dialog.cancel();
}
})
.show();
}
6.等待提示框
public void showDialog5(View v){
//第一个参数表示在哪写
final ProgressDialog dialog = ProgressDialog.show(this, "警告", "我们正在升级系统,并不要乱按按钮。耐心等待");
//起一个线程,一段时间后自动退出
new Thread(new Runnable() {
@Override
public void run() {
//方法1,系统的睡眠
/*try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
//方法2,dialog带的睡眠取消
SystemClock.sleep(2000);
dialog.cancel();
}
}).start();
}
7.等待+进度提示
public void showDialog6(View v){
//不能和等待提示框那样直接show文字,需要逐项设置
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle("提示");
dialog.setMessage("我们正在下载,请耐心等待");
//告诉系统这是一个进度条
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//进度条长度
dialog.setMax(100);
dialog.show();
//之前的进度条不会动,另起线程让他走起来
new Thread(new Runnable() {
@Override
public void run() {
int i = 0;
while(true){
//ProgressBar 这种控件是可以在子线程里更新UI的
dialog.setProgress(i++);
SystemClock.sleep(100);
if (i>100) {
break;
}
}
dialog.cancel();
}
}).start();
}