213316463.jpg

private PopupWindow mOptionsMenu;
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if(keyCode == KeyEvent.KEYCODE_MENU)
        {//点击菜单键时
            if(mOptionsMenu.isShowing())
            {//当mOptionsMenu显示时,就关闭它
                mOptionsMenu.dismiss();
            }
            else
            {//设置mOptionsMenu的横纵坐标,及在底部位置
                mOptionsMenu.showAtLocation(findViewById(R.id.main), Gravity.BOTTOM, 0, 0);
            }
            return true;
        }
        if(keyCode == KeyEvent.KEYCODE_BACK)
        {//点击返回键时
            if(mOptionsMenu.isShowing())
            {
                mOptionsMenu.dismiss();
            }
            else
            {//super.onBackPressed()里面有finish()的方法
                super.onBackPressed();
            }
            return true;
        }
                                        
        return super.onKeyDown(keyCode, event);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LayoutInflater inflater = getLayoutInflater();
        View contentView = inflater.inflate(R.layout.optionsmenu, null);
        mOptionsMenu = new PopupWindow(contentView , LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        View tv5 = contentView.findViewById(R.id.textView5);
        tv5.setOnClickListener(new OnClickListener()
        {
            //点击菜单选项也会关闭菜单
            @Override
            public void onClick(View v)
            {
                Toast.makeText(MainActivity.this, "点击", Toast.LENGTH_LONG).show();
                mOptionsMenu.dismiss();
            }
        });
        View RelativeLayout = contentView.findViewById(R.id.RelativeLayout);
        RelativeLayout.setOnClickListener(new OnClickListener()
        {
            //点击页面其他地方,关闭菜单
            @Override
            public void onClick(View v)
            {
                    mOptionsMenu.dismiss();
            }
        });
    }
    @Override
    protected void onPause()
    {//暂停时(点击电源键,锁屏),再次解锁时,要关闭菜单选项
        super.onPause();
        if(mOptionsMenu.isShowing())
        {
            mOptionsMenu.dismiss();
        }
                                        
    }


布局文件:新建xml

部分代码:

<TextView
           android:id="@+id/textView8"
           android:background="@drawable/tv_selector"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:drawableTop="@drawable/ic_launcher"
           android:text="Large Text"
           android:lines="1"
           android:gravity="center"
           android:textAppearance="?android:attr/textAppearanceLarge" />


定制Toast:

213757355.jpg

@Override
    public void onClick(View v)
    {
        Toast toast = new Toast(this);
        TextView tv = new TextView(this);
        tv.setBackgroundColor(Color.GREEN);
        tv.setText("定制Toast");
        toast.setView(tv);
        toast.setDuration(Toast.LENGTH_LONG);
        //设置位置,页面的顶部,偏移量x,y=20
        toast.setGravity(Gravity.TOP, 20, 20);
        toast.show();
    }