菜单
第一步:创建弹出菜单对象
PopupMenu popupMenu = new PopupMenu(Context context, View anchor);
第一个参数view.cantext 始终可以得到一个cantext,第二个参数view弹出菜单的显示位置,显示在view的下面
第二步:载入菜单的布局文件
popupMenu.getMenuInflater().inflate(menuRes, menu)
第一个参数是布局文件的路劲(R.menu.item),第二个参数是popupMenu.getMenu()
只能载入文字的布局文件,不能带有图片(无法显示)
第三步:可设置监听器
OnMenuItemClickListener
package text.act;
import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button button;
private TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
this.button = (Button) findViewById(R.id.button);
this.textView1 = (TextView) findViewById(R.id.textView1);
this.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
/**创建弹出菜单对象 PopupMenu(Context context, View anchor)
* 第2个参数view作用:弹出菜单显示在view的下面
*/
PopupMenu popupMenu = new PopupMenu(MainActivity.this, textView1);
//为弹出菜单加载菜单项xml配置文件(res/menu/item.xml)
popupMenu.getMenuInflater().inflate(R.menu.item, popupMenu.getMenu());
//为弹出菜单设置监听器(可选)
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {//menuItem菜单项对象
int id = menuItem.getItemId();//得到被点击菜单项的id
if(id == R.id.close) {
MainActivity.this.textView1.setText("关闭");
}else if(id == R.id.open) {
textView1.setText("打开");
}
return false;
}
});
//显示弹出菜单
popupMenu.show();
}
});
}
}
XML布局文件
AlertDialog、PopupWindow、ProgressDialog、DataPickerDialog、TimePickeDialog
alertDialog.cancle 取消对话框
getProgress 读取当前进度
show()显示
cancle()取消
dismiss取消
setCancelable(false)禁止用户点击外围时取消显示
PopupWindow的特殊:取消对话框可以在子线程中执行(不增在子线程中操作页面);
Activity.java
package xena.act;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
/**
* alertDialog.cancle();取消对话框
*/
public class MainActivity extends Activity implements android.view.View.OnClickListener {
private Button btn_standardDialog, btn_MyDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.btn_standardDialog = (Button) this
.findViewById(R.id.btn_standardDialog);
this.btn_MyDialog = (Button) this.findViewById(R.id.btn_MyDialog);
this.btn_standardDialog.setOnClickListener(this);
this.btn_MyDialog.setOnClickListener(this);
}
public View getView1() {
TextView tv = new TextView(this);
tv.setText("小明");
tv.setTextSize(100);
tv.setBackgroundColor(Color.WHITE);
return tv;
}
public View getView2() {
LayoutInflater layoutInflater = this.getLayoutInflater();
// LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.dialog, null);
Button btn_sure = (Button) view.findViewById(R.id.btn_sure);
final EditText editText = (EditText) view.findViewById(R.id.editText);
btn_sure.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String str = editText.getText().toString();
Toast.makeText(v.getContext(), str, Toast.LENGTH_LONG).show();
alertDialog.cancel();//取消对话框
}
});
return view;
}
private AlertDialog alertDialog;
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_MyDialog) {// 自定义对话框
// 创建对话框的构造者对象 AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(this.getView2());//设置界面
// builder.show();//创建AlertDialog并显示
alertDialog = builder.create();//创建对话框
alertDialog.show();//显示对话框
} else if (v.getId() == R.id.btn_standardDialog) {// 标准对话框(普通对话框)
// 创建标准对话框
AlertDialog alertDialog = this.getAlertDialog4();
// 显示标准对话框
alertDialog.show();
}
}
// 创建标准对话框
public AlertDialog getAlertDialog1() {
// 创建对话框的构造者对象 AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("天气");// 设置标题 可选
builder.setMessage("晴转多云 40度");// 设置内容 可选
builder.setIcon(R.drawable.ic_launcher);// 设置图片 可选
// 创建对话框对象
AlertDialog alertDialog = builder.create();
return alertDialog;
}
// 创建标准对话框
public AlertDialog getAlertDialog2() {
// 创建对话框的构造者对象 AlertDialog.Builder
return new AlertDialog.Builder(this).setTitle("天气")
.setMessage("晴转多云 40度").setIcon(R.drawable.ic_launcher)
.create();// 设置图片 可选
}
// 创建标准对话框,设置按钮,并设置监听器
public AlertDialog getAlertDialog3() {
// 创建对话框的构造者对象 AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("天气");// 设置标题 可选
builder.setMessage("晴转多云 40度");// 设置内容 可选
builder.setIcon(R.drawable.ic_launcher);// 设置图片 可选
//设置铵钮和监听器 可选
builder.setNegativeButton("确定右", new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this, "确定右", Toast.LENGTH_LONG).show();
}
});
//设置铵钮和监听器 可选
builder.setNeutralButton("中取消", new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this, "中取消", Toast.LENGTH_LONG).show();
}
});
//设置铵钮和监听器 可选
builder.setPositiveButton("左", new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this, "左", Toast.LENGTH_LONG).show();
}
});
// 创建对话框对象
AlertDialog alertDialog = builder.create();
return alertDialog;
}
private android.content.DialogInterface.OnClickListener listener
= new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
if(arg1 == DialogInterface.BUTTON_NEGATIVE) {
Toast.makeText(MainActivity.this, "确定右", Toast.LENGTH_LONG).show();
}else if(arg1 == DialogInterface.BUTTON_NEUTRAL) {
Toast.makeText(MainActivity.this, "中取消", Toast.LENGTH_LONG).show();
}else if(arg1 == DialogInterface.BUTTON_POSITIVE) {
Toast.makeText(MainActivity.this, "左", Toast.LENGTH_LONG).show();
}
}
};
public AlertDialog getAlertDialog4() {
// 创建对话框的构造者对象 AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("天气");// 设置标题 可选
builder.setMessage("晴转多云 40度");// 设置内容 可选
builder.setIcon(R.drawable.ic_launcher);// 设置图片 可选
//设置铵钮和监听器 可选
builder.setNegativeButton("确定右", listener);
//设置铵钮和监听器 可选
builder.setNeutralButton("中取消", listener);
//设置铵钮和监听器 可选
builder.setPositiveButton("左", listener);
// 创建对话框对象
AlertDialog alertDialog = builder.create();
return alertDialog;
}
}
XML-----main_activity
package com.yt;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.PopupMenu;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.TableLayout;
import android.widget.Toast;
@SuppressLint("NewApi")
public class MainActivity extends Activity {
ImageView imager_jianpan, imgbnt_touxiang, imager_zidingyi,im_demo,im_erwei;
Button bt_denglu;
private AlertDialog builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
imager_jianpan = (ImageView) findViewById(R.id.imager_jianpan);
imgbnt_touxiang = (ImageView) findViewById(R.id.imgbnt_touxiang);
imager_zidingyi = (ImageView) findViewById(R.id.imager_zidingyi);
bt_denglu = (Button) findViewById(R.id.bt_denglu);
im_demo=(ImageView) findViewById(R.id.im_demo);
/************************************* 菜单 **************************************************/
imgbnt_touxiang.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(MainActivity.this,
imgbnt_touxiang);
popupMenu.getMenuInflater().inflate(R.menu.imager,
popupMenu.getMenu());
popupMenu
.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
});
popupMenu.show();
}
});
imager_jianpan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(MainActivity.this,
imager_jianpan);
popupMenu.getMenuInflater().inflate(R.menu.main,
popupMenu.getMenu());
popupMenu
.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
});
popupMenu.show();
}
});
/*************************** 菜单 *********************************************/
/********************************** 标准对话框 ***********************************************/
bt_denglu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog alertDialog = this.getAlertDialog();
alertDialog.setCancelable(true);
alertDialog.show();
}
private android.content.DialogInterface.OnClickListener listener = new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_NEGATIVE) {
Toast.makeText(MainActivity.this, "正在更新",
Toast.LENGTH_LONG).show();
} else if (which == DialogInterface.BUTTON_NEUTRAL) {
Toast.makeText(MainActivity.this, "取消",
Toast.LENGTH_LONG).show();
} else if (which == DialogInterface.BUTTON_POSITIVE) {
Toast.makeText(MainActivity.this, "确定",
Toast.LENGTH_LONG).show();
}
}
};
public AlertDialog getAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle("心情");
builder.setMessage("正在更新心情······");
builder.setIcon(R.drawable.xiao);
builder.setNegativeButton("更新", listener);
builder.setNeutralButton("取消", listener);
builder.setPositiveButton("确定", listener);
AlertDialog aDialog = builder.create();
return aDialog;
}
});
/****************************** 标准对话框 *****************************************/
/*********************************自定义对话框******************************************************/
imager_zidingyi.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setView(MainActivity.this.getView());
builder.create();
builder.show();
}
});
}
public final View getView() {
LayoutInflater layoutInflater = this.getLayoutInflater();
View view = layoutInflater.inflate(R.layout.activity_view, null);
TableLayout id = (TableLayout) view.findViewById(R.id.id);
Button bt_denglu = (Button) view.findViewById(R.id.bt_denglu);
final EditText ed_name = (EditText) view.findViewById(R.id.ed_name);
final EditText ed_pass = (EditText) view.findViewById(R.id.ed_pass);
bt_denglu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String str = ed_name.getText().toString();
String str1 = ed_pass.getText().toString();
Toast.makeText(MainActivity.this,str+str1, Toast.LENGTH_LONG).show();
//builder.cancel();
}
});
return view;
}
/***************************自定义对话框**************************************************************/
}