菜单PopupMenu和对话框AlertDialog、进度条对话框PopupWindow用法相关例子和自己写的案例

菜单

第一步:创建弹出菜单对象

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


    

XML----dialog


    

自己写的界面和对话框

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;
	}
	/***************************自定义对话框**************************************************************/
}

XML---main_activity



    

        

            

                

                

                    

                    
                
            
        

        

            

                

                
            

            

                

                

                    

                    
                

                

                    

                    
                
            

            

                

                
            
        

        

            

                

XML----activity_view



    

        

            

                

                

                    

                    
                
            
        

        

            

                

                
            

            

                

                

                    

                    
                

                

                    

                    
                
            

            
            
        

        

            

                



你可能感兴趣的:(Android基础,Android项目)