Android 中Popwindow弹出菜单的两种方法实例

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; } }); } }); } }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2024-08-28 18:20:59

Android 中Popwindow弹出菜单的两种方法实例的相关文章

Android判断后台服务是否开启的两种方法实例详解

Android判断后台服务是否开启的两种方法实例详解 最近项目用到后台上传,就开启了一个服务service. 但是刚开始用这种方法,有些机型不支持:酷派不支持.然后又换了第二种判断方法. // public boolean isServiceWork(Context mContext, String serviceName) { // boolean isWork = false; // ActivityManager myAM = (ActivityManager) mContext // .

使用POST方式弹出窗口的两种方法示例介绍_javascript技巧

最近在做一个功能需要弹窗,但是不能用get方式,因为get方式对url的长度有限制,所以必须用post,总结了两个方法 1. 复制代码 代码如下: var $form1=$("<form action='"+url+"' id='f' name='f' method='post'></form>"); $form1.append($("<input type='hidden' name='"+i+"' va

android中查看项目数字证书的两种方法

  方法一:在Eclipse中选择winows -> preferance -> android -> build 方法二:通过在命令行中输入以下命令进行查看: keytool -list -v -alias Ada168855 -keystore D:EclipseWorkspace3GpsTestGpsTest.keystore 方法二如下图所示:

Android中监听短信的两种方法_Android

1.监听广播 缺点,因为优先级的原因可能接收不到. 代码: public static final String TAG = "ImiChatSMSReceiver"; public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"; public void onReceive(Context context, Intent intent) { if

Android使用Activity实现从底部弹出菜单或窗口的方法

本文实例讲述了Android使用Activity实现从底部弹出菜单或窗口的方法.分享给大家供大家参考,具体如下: 这里使用activity实现弹出滑动窗口或菜单,主要是使用了一些设置activity的样式来实现弹出窗口和滑动效果,实现如下: 第一步:设计要弹出窗口的xml布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://sche

Android 中Notification弹出通知实现代码

NotificationManager 是状态栏通知的管理类,负责发通知.清除通知等操作. NotificationManager 是一个系统Service,可通过getSystemService(NOTIFICATION_SERVICE)方法来获取 接下来我想说的是android5.0 后的弹出通知, 网上的方法是: //第一步:实例化通知栏构造器Notification.Builder: Notification.Builder builder =new Notification.Build

Excel中常见的拆分单元格两种方法

  下图中的表头就是已经合并了四个单元格的一个大单元格,本教程需要讲述的就是如何将这个大的单元格拆分成原有的四个小单元格.下面请看小编图文详解Excel中常见的拆分单元格两种方法. 拆分单元格方法一 选中要拆分的大单元格,切换到"开始"选项卡,在"对齐方式"组中单击"合并后居中"按钮.这个按钮之前是选中状态,单击之后,就取消选中了,达到了拆分的效果. 拆分单元格方法二 1.选中要合并的单元格,单击鼠标右键,在弹出的快捷菜单中选择"设置单

Excel中制作下拉菜单的4种方法

Excel中制作下拉菜单的4种方法   其实还有另外3种: 1.创建列表 在一列中按alt+向下箭头,即可生成一个下拉菜单(创建列表).此方法非常简单. 2.开发工具 - 插入 - 组合框(窗体控件) 如果你的excel没有[开发工具]选项,可以从 文件 - 选项 - 自定义功能区,选中"开发工具".(excel2007为office按钮 - excel选项 - 常规 - 显示"开发工具") 3.开发工具 - 组合框(ActiveX控件) 注: 在"设计模

Android实现图片轮播效果的两种方法_Android

大家在使用APP的过程中,经常会看到上部banner图片轮播的效果,那么今天我们就一起来学习一下,android中图片轮询的几种实现方法: 第一种:使用动画的方法实现:(代码繁琐) 这种发放需要:两个动画效果,一个布局,一个主类来实现,不多说了,来看代码吧: public class IamgeTrActivity extends Activity { /** Called when the activity is first created. */ public ImageView image