Android 中Popwindow弹出菜单的两种方法实例
程序员文章站
2023-10-23 15:01:59
android 中popwindow弹出菜单的两种方法实例
1.popwindow就是对话框的一种方式!
此文讲解的android中对话框的一种使用方式,它叫popwi...
android 中popwindow弹出菜单的两种方法实例
1.popwindow就是对话框的一种方式!
此文讲解的android中对话框的一种使用方式,它叫popwindow。
2、popwindow的特性
android的对话框有两种:popupwindow和alertdialog。它们的不同点在于:
alertdialog的位置固定,而popupwindow的位置可以随意。
alertdialog是非阻塞线程的,而popupwindow是阻塞线程的。
popupwindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物的不同,可以分为相对于某个控件(anchor锚)和相对于父控件。
实例代码:
方法一的activity
package com.app.test02; import android.app.activity; import android.os.bundle; import android.view.gravity; import android.view.motionevent; import android.view.view; import android.view.view.onclicklistener; import android.view.view.ontouchlistener; import android.view.viewgroup.layoutparams; import android.widget.button; import android.widget.popupwindow; import android.widget.toast; public class popwindowleft extends activity { // 声明popupwindow对象的引用 private popupwindow popupwindow; /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_popupwindow_main); // 点击按钮弹出菜单 button pop = (button) findviewbyid(r.id.popbtn); pop.setonclicklistener(popclick); } // 点击弹出左侧菜单的显示方式 onclicklistener popclick = new onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub getpopupwindow(); // 这里是位置显示方式,在屏幕的左侧 popupwindow.showatlocation(v, gravity.left, 0, 0); } }; /** * 创建popupwindow */ protected void initpopuptwindow() { // todo auto-generated method stub // 获取自定义布局文件activity_popupwindow_left.xml的视图 view popupwindow_view = getlayoutinflater().inflate(r.layout.activity_popupwindow_left, null, false); // 创建popupwindow实例,200,layoutparams.match_parent分别是宽度和高度 popupwindow = new popupwindow(popupwindow_view, 200, layoutparams.match_parent, true); // 设置动画效果 popupwindow.setanimationstyle(r.style.animationfade); // 点击其他地方消失 popupwindow_view.setontouchlistener(new ontouchlistener() { @override public boolean ontouch(view v, motionevent event) { // todo auto-generated method stub if (popupwindow != null && popupwindow.isshowing()) { popupwindow.dismiss(); popupwindow = null; } return false; } }); } /*** * 获取popupwindow实例 */ private void getpopupwindow() { if (null != popupwindow) { popupwindow.dismiss(); return; } else { initpopuptwindow(); } } }
方法二的activity
package com.app.test02; import android.app.activity; import android.os.bundle; import android.view.gravity; import android.view.motionevent; import android.view.view; import android.view.view.onclicklistener; import android.view.view.ontouchlistener; import android.view.viewgroup.layoutparams; import android.widget.popupwindow; public class popwindowleftnew extends activity{ private popupwindow popupwindow; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.activity_popupwindow_main); findviewbyid(r.id.popbtn).setonclicklistener(new onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub // 获取自定义布局文件activity_popupwindow_left.xml的视图 view popupwindow_view = getlayoutinflater().inflate(r.layout.activity_popupwindow_left, null,false); // 创建popupwindow实例,200,layoutparams.match_parent分别是宽度和高度 popupwindow = new popupwindow(popupwindow_view, 200, layoutparams.match_parent, true); // 设置动画效果 popupwindow.setanimationstyle(r.style.animationfade); // 这里是位置显示方式,在屏幕的左侧 popupwindow.showatlocation(v, gravity.left, 0, 0); // 点击其他地方消失 popupwindow_view.setontouchlistener(new ontouchlistener() { @override public boolean ontouch(view v, motionevent event) { // todo auto-generated method stub if (popupwindow != null && popupwindow.isshowing()) { popupwindow.dismiss(); popupwindow = null; } return false; } }); } }); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: 网站外链建设常用的几种方法