android PopupWindow 和 Activity弹出窗口

上传人:飞*** 文档编号:5921781 上传时间:2017-09-08 格式:DOCX 页数:6 大小:16.54KB
返回 下载 相关 举报
android PopupWindow 和 Activity弹出窗口_第1页
第1页 / 共6页
android PopupWindow 和 Activity弹出窗口_第2页
第2页 / 共6页
android PopupWindow 和 Activity弹出窗口_第3页
第3页 / 共6页
android PopupWindow 和 Activity弹出窗口_第4页
第4页 / 共6页
android PopupWindow 和 Activity弹出窗口_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《android PopupWindow 和 Activity弹出窗口》由会员分享,可在线阅读,更多相关《android PopupWindow 和 Activity弹出窗口(6页珍藏版)》请在金锄头文库上搜索。

1、本人小菜一个。目前只见过两种弹出框的实现方式,第一种是最常见的 PopupWindow,第二种也就是 Activity 的方式是前几天才见识过。感觉很霸气哦。没想到,activity 也可以做伪窗口。 先贴上最常见的方法,主要讲 activity 的方法。 一、弹出 PopupWindow 复制代码 代码如下:/* * 弹出 menu 菜单 */ public void menu_press() if(!menu_display) /获取 LayoutInflater 实例 inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFL

2、ATER_SERVICE); /这里的 main 布局是在 inflate 中加入的哦,以前都是直接 this.setContentView()的吧?呵呵 /该方法返回的是一个 View 的对象,是布局中的根 layout = inflater.inflate(R.layout.main_menu, null); /下面我们要考虑了,我怎样将我的 layout 加入到 PopupWindow 中呢?很简单 menuWindow = new PopupWindow(layout,LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); /后两个参

3、数是 width 和 height /menuWindow.showAsDropDown(layout); /设置弹出效果 /menuWindow.showAsDropDown(null, 0, layout.getHeight(); /设置如下四条信息,当点击其他区域使其隐藏,要在 show 之前配置 menuWindow.setFocusable(true); menuWindow.setOutsideTouchable(true); menuWindow.update(); menuWindow.setBackgroundDrawable(new BitmapDrawable(); mC

4、lose = (LinearLayout)layout.findViewById(R.id.menu_close); menuWindow.showAtLocation(this.findViewById(R.id.schoolmain), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0,50); /设置 layout 在 PopupWindow 中显示的位置 /如何获取我们 main 中的控件呢?也很简单 mMainbtn = (LinearLayout)layout.findViewById(R.id.menu_main_btn); mHistory

5、btn = (LinearLayout) layout.findViewById(R.id.menu_history_btn); mHelpbtn = (LinearLayout) layout.findViewById(R.id.menu_help_btn); /下面对每一个 Layout 进行单击事件的注册吧。 。 。 /比如单击某个 MenuItem 的时候,他的背景色改变 /事先准备好一些背景图片或者颜色 mMainbtn.setOnClickListener (new View.OnClickListener() Override public void onClick(View a

6、rg0) mywebView.loadUrl(URL); menuWindow.dismiss(); /响应点击事件之后关闭 Menu ); mHelpbtn.setOnClickListener (new View.OnClickListener() Override public void onClick(View arg0) mywebView.loadUrl(URL); menuWindow.dismiss(); /响应点击事件 ); mHistorybtn.setOnClickListener (new View.OnClickListener() Override public v

7、oid onClick(View arg0) mywebView.loadUrl(URL); menuWindow.dismiss(); /响应点击事件 ); menu_display = true; else /如果当前已经为显示状态,则隐藏起来 menuWindow.dismiss(); menu_display = false; public void back_press() if(menu_display) /如果 Menu 已经打开 ,先关闭 Menu menuWindow.dismiss(); menu_display = false; else Intent intent =

8、new Intent(); intent.setClass(MainActivity.this,Exit.class); startActivity(intent); 这种方法很简单,要注意的是如果要想点击其他地方使其隐藏,要在 show 设置四条属性如下: / 使其聚焦 mPopupWindow.setFocusable(true); / 设置允许在外点击消失 mPopupWindow.setOutsideTouchable(true); /刷新状态 mPopupWindow.update(); /点 back 键和其他地方使其消失, 设置了这个才能触发 OnDismisslistener

9、,设置其他控件变化等操作 mPopupWindow.setBackgroundDrawable(new BitmapDrawable(); 二、Activity 做伪弹窗 本人感觉这个很先进啊。恕我冒犯,我只这里直接写上牛人的代码。此牛人写的是防微信的 demo。做的相当好,我在后面附上 CSDN 免费下载链接。 先贴上 java 代码 Exit.java package cn.buaa.myweixin; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import

10、 android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.Toast; public class Exit extends Activity private LinearLayout layout; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentVie

11、w(R.layout.exit_dialog); layout=(LinearLayout)findViewById(R.id.exit_layout); layout.setOnClickListener(new OnClickListener() Override public void onClick(View v) / TODO Auto-generated method stub Toast.makeText(getApplicationContext(), 提示:点击窗口外部关闭窗口! , Toast.LENGTH_SHORT).show(); ); Override public

12、 boolean onTouchEvent(MotionEvent event) finish(); return true; public void exitbutton1(View v) this.finish(); public void exitbutton0(View v) this.finish(); MainWeixin.instance.finish();/关闭 Main 这个 Activity 附上布局文件:exit_dialog.xml 复制代码 代码如下:View Code 分析,弹出 exit 这个框很简单,本身就是 activity,在主界面用 startavtivi

13、ty 等方法像普通activity 启动。 关键是如何做到点击其他地方退出和如何关闭程序。 、点击其他地方退出,只要监听 OnClickListener 让所有的点击都退出就行了(除了 xml 中指定按钮事件之外)。 、退出主程序。只要在出程序中将主程序自己设置成静态对象,在外部调用即可 public static MainWeixin instance=null; 上面的布局和 activity 并不能将 activity 的窗体展现在主界面之上,看起来像个弹出框。下面是弹出框的 styles 配置: 复制代码 代码如下:android:color/transparent null true

14、 true true null android:style/Animation.Dialog true 下面我们来分析一下这个布局的含义及重点: 重点 1、android:color/transparent窗口背景色 重点 2、nullDialog 的 windowFrame 框为无 重点 4、true是否浮现在 activity 之上 重点 5、true窗口是否半透明是(与第一条配合使用) 重点 6、android:style/Animation.Dialog窗口弹出效果 重点 7、true 是否允许背景模糊 重点 8、null这个不设置的话,可能会出现边框黑线 以上代码都是牛人们的功劳,我拿来做一分析,给更多需要的朋友。 我在众多牛人的指引下一步步成长,感谢牛人们。详细出处参考:http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号