源码下载:
运行效果:
按了返回后:
java代码:
package com.example.cest;import android.app.Activity;import android.graphics.drawable.PaintDrawable;import android.os.Bundle;import android.view.Gravity;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.PopupWindow;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity { PopupWindow popupWindow,popupWindoweExit; Button bu_shi,bu_fou; TextView view1; TextView view2; Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button) findViewById(R.id.bu); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub popinit(); } }); } protected void popinit() { // TODO Auto-generated method stub LayoutInflater inflater = LayoutInflater.from(this); View pop_view = inflater.inflate(R.layout.bujv, null); view1=(TextView) pop_view.findViewById(R.id.tv1); view2=(TextView) pop_view.findViewById(R.id.tv2); //设置下拉按钮父布局的高和宽 popupWindow = new PopupWindow(pop_view,ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setFocusable(true);//没这行按钮下拉了,按手机返回会直接退出// popupWindow.setOutsideTouchable(true); popupWindow.setBackgroundDrawable(new PaintDrawable());//没这行按钮下拉了不会消失 popupWindow.showAtLocation(pop_view, Gravity.BOTTOM, 0, 0);//PopupWindow显示的位置 view1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "这是注册",Toast.LENGTH_LONG).show(); } }); view2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "这是登录",Toast.LENGTH_LONG).show(); } }); } /*按返回弹出是否退出画面 * * */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { popExit(); } return false; } /*用PopupWindow做的退出 * */ private void popExit() { // TODO Auto-generated method stub LayoutInflater inflater = LayoutInflater.from(this); View pop_view = inflater.inflate(R.layout.exit, null); bu_shi=(Button) pop_view.findViewById(R.id.bu_exit_shi); bu_fou=(Button) pop_view.findViewById(R.id.bu_exit_fou); popupWindoweExit = new PopupWindow(pop_view,200,ViewGroup.LayoutParams.WRAP_CONTENT); popupWindoweExit.setFocusable(true); popupWindoweExit.setOutsideTouchable(true);// popupWindow.setBackgroundDrawable(new PaintDrawable()); popupWindoweExit.showAtLocation(pop_view, Gravity.BOTTOM|Gravity.CENTER_VERTICAL, 0, 150); bu_shi.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub MainActivity.this.finish(); } }); bu_fou.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub popupWindoweExit.dismiss(); } }); }}
点击按钮显示的布局文件bujv.xml:
按返回按钮弹出退出的xml: