控件PopupWindow的使用

来源:互联网 发布:北大青鸟计算机二级vb 编辑:程序博客网 时间:2024/06/11 10:09
package com.demo.rico_lesson_popupwindow;import android.app.Activity;import android.graphics.drawable.ColorDrawable;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.Gravity;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnKeyListener;import android.widget.Button;import android.widget.LinearLayout.LayoutParams;import android.widget.PopupWindow;import android.widget.Toast;public class IndexActivity extends Activity {    private Button mButtonShowPopupWindow;    private int screenHeight;    private void showPopupWindow() {        LayoutInflater inflater = getLayoutInflater();        View contentView = inflater.inflate(R.layout.layout_popupwindow, null);        // PopWindow 是必须要给高宽        final PopupWindow popupWindow = new PopupWindow(contentView,                LayoutParams.MATCH_PARENT, this.screenHeight / 3);        // 设置在其他空白区域触摸的时候,PopupWindow 消失        // 属性也可以在购置的时候来给        popupWindow.setFocusable(true);        // 必须和上面代码配合,才有效         popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));        // OnKey事件- 为了在PopupWindow弹出后,点击返回键,PopupWindow 消失        contentView.setOnKeyListener(new OnKeyListener() {            @Override            public boolean onKey(View v, int keyCode, KeyEvent event) {                if (keyCode == KeyEvent.KEYCODE_BACK) {                    popupWindow.dismiss();                    return true;                }                return false;            }        });        /**         * 设置弹出的动画效果         */        popupWindow.setAnimationStyle(R.style.anim_popupwindow);        // 设置PopupWindow 的位置        popupWindow.showAtLocation(contentView, Gravity.BOTTOM, 10, 10);    }    public void popupWindowItemClick(View view) {        switch (view.getId()) {        case R.id.popupwindow_1:            Toast.makeText(this, "You click one", Toast.LENGTH_SHORT).show();            break;        case R.id.popupwindow_2:            Toast.makeText(this, "You click two", Toast.LENGTH_SHORT).show();            break;        case R.id.popupwindow_3:            Toast.makeText(this, "You click three", Toast.LENGTH_SHORT).show();            break;        default:            break;        }    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_index);        DisplayMetrics metrics = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(metrics);        int width = metrics.widthPixels; // 屏幕的宽度(像素值)        int height = metrics.heightPixels; // 屏幕的高度(像素值)        this.screenHeight = height;        float density = metrics.density; // 屏幕的密度        int densityDPI = metrics.densityDpi; // 屏幕的DPI        // 打印以上的值        mButtonShowPopupWindow = (Button) findViewById(R.id.btn_show_popupwindow);        mButtonShowPopupWindow.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                showPopupWindow();            }        });    }}
0 0