博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PopupWindow
阅读量:5056 次
发布时间:2019-06-12

本文共 3023 字,大约阅读时间需要 10 分钟。

*** PopupWindow

*显示类型:

下拉式
mWindow.showDropDown(anchor,xoff,yoff,gravity);
浮动式
mWindow.showAtlocation(ContentView,Gravity,BOOTTOM,0,0)

案例效果:点击菜单按钮时若PopuWindow未显示则让它从底部显示出来,若已显示则让它消失,点击返回键时若PopupWindow正在显 示则让它消失;点击收藏和分享选项时Toast显示,点击退出选项时若PopupWindow正在显示则让它消失并结束活动

content_layout.xml文件中创建Popup显示时的选项:

MainActivity.java中:

public class MainActivity extends Activity implements OnClickListener{    private View contentView;    private PopupWindow mWindow;    private ImageView iv1,iv2,iv3;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                initPopuWindow();        initView();    }    private void initView() {        iv1 = (ImageView) contentView.findViewById(R.id.iv1);        iv2 = (ImageView) contentView.findViewById(R.id.iv2);        iv3 = (ImageView) contentView.findViewById(R.id.iv3);                iv1.setOnClickListener(this);        iv2.setOnClickListener(this);        iv3.setOnClickListener(this);       }    private void initPopuWindow() {        //将xml布局文件转换成我们需要的内容分视图        contentView = getLayoutInflater().inflate(R.layout.content_layout, null);        //第一个参数contentView参数:是内容视图        mWindow = new PopupWindow(contentView, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);        //设置触摸PopupWindow外面的区域时是否可以使得这个PopupWindow消失        mWindow.setOutsideTouchable(true);        //设置背景        //mWindow.setBackgroundDrawable(background);        //设置PopupWindow是否触摸时会有响应        //mWindow.setTouchable(true);            }    //重写专门处理某个按键的方法    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        switch (keyCode) {        case KeyEvent.KEYCODE_MENU://监听menu键            if(mWindow.isShowing()){//isShowing():判断PoupWindow是否正在显示                mWindow.dismiss();//dismiss():让popupWindow消失的方法            }else{                //显示PoupWindow--->在某个位置显示                mWindow.showAtLocation(contentView, Gravity.BOTTOM, 0, 0);                //作为下拉视图显示                //mWindow.showAsDropDown(anchor, xoff, yoff);            }            break;        case KeyEvent.KEYCODE_BACK://监听返回键            if(mWindow.isShowing()){                mWindow.dismiss();            }            break;        }        return super.onKeyDown(keyCode, event);    }        @Override    public void onClick(View v) {        switch (v.getId()) {        case R.id.iv1:            finish();            if(mWindow.isShowing()){                mWindow.dismiss();            }            break;        case R.id.iv2:            Toast.makeText(this, "收藏", Toast.LENGTH_SHORT).show();            break;        case R.id.iv3:            Toast.makeText(this, "分享", Toast.LENGTH_SHORT).show();            break;        }       }    @Override    protected void onDestroy() { //PopupWindow不用时将它的对象给回收掉        super.onDestroy();        if(mWindow!=null){            mWindow.dismiss();            mWindow = null;        }    }}

1503569-20181017110306455-833635099.png

转载于:https://www.cnblogs.com/SanguineBoy/p/9802852.html

你可能感兴趣的文章
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
代码整洁
查看>>
蓝桥杯-分小组-java
查看>>
Java基础--面向对象编程1(类与对象)
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
关于js sort排序方法
查看>>
JAVA面试常见问题之Redis篇
查看>>
javascript:二叉搜索树 实现
查看>>
网络爬虫Heritrix源码分析(一) 包介绍
查看>>
__int128的实现
查看>>
Problem - 1118B - Codeforces(Tanya and Candies)
查看>>
jdk1.8 api 下载
查看>>
svn 图标不显示
查看>>
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>