安卓开发笔记——PopupWindow,做出如弹出框效果

先看一个效果图

点击按钮后出现一个这么的效果,这个弹出框实现的答题代码如下

先来一个弹出框的布局xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:background="#90EE90" >
 7
 8     <LinearLayout
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:orientation="vertical" >
12
13         <TextView
14             android:id="@+id/textView1"
15             android:layout_width="wrap_content"
16             android:layout_height="wrap_content"
17             android:layout_margin="20dp"
18
19             android:text="请选择"
20             android:textColor="#ff2525"
21             android:textSize="20sp" />
22
23         <View
24             android:layout_width="match_parent"
25             android:layout_height="1dp"
26             android:layout_marginLeft="20dp"
27             android:layout_marginRight="20dp"
28             android:background="#969696" />
29
30         <Button
31             android:id="@+id/button1"
32             android:layout_width="match_parent"
33             android:layout_height="wrap_content"
34             android:layout_marginLeft="20dp"
35             android:layout_marginRight="20dp"
36              android:onClick="abc1"
37             android:gravity="left|center_vertical"
38             android:padding="10dp"
39             android:text="个人信息"
40             android:textColor="#2a2a2a"
41             android:textSize="15sp" />
42
43         <View
44             android:layout_width="match_parent"
45             android:layout_height="1px"
46             android:layout_marginLeft="20dp"
47             android:layout_marginRight="20dp"
48             android:background="#a6a6a6" />
49
50         <Button
51             android:id="@+id/button2"
52             android:layout_width="match_parent"
53             android:layout_height="wrap_content"
54             android:layout_marginLeft="20dp"
55             android:layout_marginRight="20dp"
56             android:onClick="abc2"
57             android:gravity="left|center_vertical"
58             android:padding="10dp"
59             android:text="好友列表"
60             android:textColor="#2a2a2a"
61             android:textSize="15sp" />
62
63  <View
64             android:layout_width="match_parent"
65             android:layout_height="1px"
66             android:layout_marginLeft="20dp"
67             android:layout_marginRight="20dp"
68             android:background="#a6a6a6" />
69
70         <Button
71             android:id="@+id/button3"
72             android:layout_width="match_parent"
73             android:layout_height="wrap_content"
74             android:layout_marginLeft="20dp"
75             android:layout_marginRight="20dp"
76             android:onClick="abc2"
77             android:gravity="left|center_vertical"
78             android:padding="10dp"
79             android:text="我的留言板"
80             android:textColor="#2a2a2a"
81             android:textSize="15sp" />
82
83     </LinearLayout>
84
85 </LinearLayout>

然后是在主界面的设计,按钮自己设定,我把在按钮内如何引入写出来

代码如下

 1 LayoutInflater inflater = LayoutInflater.from(getBaseContext());//获取一个填充器
 2         View view = inflater.inflate(R.layout.chakan, null);//填充我们自定义的布局
 3         Display display = getWindowManager().getDefaultDisplay();//得到当前屏幕的显示器对象
 4         Point size = new Point();//创建一个Point点对象用来接收屏幕尺寸信息
 5         display.getSize(size);//Point点对象接收当前设备屏幕尺寸信息
 6         int width = size.x;//从Point点对象中获取屏幕的宽度(单位像素)
 7         int height = size.y;//从Point点对象中获取屏幕的高度(单位像素)
 8         Log.v("zxy", "width="+width+",height="+height);//width=480,height=854可知手机的像素是480x854的
 9         //创建一个PopupWindow对象,第二个参数是设置宽度的,用刚刚获取到的屏幕宽度乘以2/3,取该屏幕的2/3宽度,从而在任何设备中都可以适配,高度则包裹内容即可,最后一个参数是设置得到焦点
10         PopupWindow popWindow = new PopupWindow(view, 2*width/3, LayoutParams.WRAP_CONTENT, true);
11         popWindow.setBackgroundDrawable(new BitmapDrawable());//设置PopupWindow的背景为一个空的Drawable对象,如果不设置这个,那么PopupWindow弹出后就无法退出了
12         popWindow.setOutsideTouchable(true);//设置是否点击PopupWindow外退出PopupWindow
13         WindowManager.LayoutParams params = getWindow().getAttributes();//创建当前界面的一个参数对象
14         params.alpha = 1f;//设置参数的透明度为0.8,透明度取值为0~1,1为完全不透明,0为完全透明,因为android中默认的屏幕颜色都是纯黑色的,所以如果设置为1,那么背景将都是黑色,设置为0,背景显示我们的当前界面
15         getWindow().setAttributes(params);//把该参数对象设置进当前界面中
16
17         Button btn = (Button) view.findViewById(R.id.button1);
18         btn.setOnClickListener(new View.OnClickListener() {
19             @Override
20             public void onClick(View arg0) {
21                 Intent intent=new Intent(user.this,persondata.class);
22                 startActivity(intent);
23                 finish();
24             }
25         });
26
27         Button btn1 = (Button) view.findViewById(R.id.button2);
28         btn1.setOnClickListener(new View.OnClickListener() {
29             @Override
30             public void onClick(View arg1) {
31                 Intent intent=new Intent(user.this,friendlist.class);
32                 startActivity(intent);
33                 finish();
34             }
35         });
36
37         Button btn2 = (Button) view.findViewById(R.id.button3);
38         btn2.setOnClickListener(new View.OnClickListener() {
39             @Override
40             public void onClick(View arg1) {
41                 Intent intent=new Intent(user.this,liuyanban.class);
42                 startActivity(intent);
43                 finish();
44             }
45         });
46
47
48
49         popWindow.setOnDismissListener(new OnDismissListener() {//设置PopupWindow退出监听器
50             @Override
51             public void onDismiss() {//如果PopupWindow消失了,即退出了,那么触发该事件,然后把当前界面的透明度设置为不透明
52                 WindowManager.LayoutParams params = getWindow().getAttributes();
53                 params.alpha = 1.0f;//设置为不透明,即恢复原来的界面
54                 getWindow().setAttributes(params);
55             }
56         });
57         //第一个参数为父View对象,即PopupWindow所在的父控件对象,第二个参数为它的重心,后面两个分别为x轴和y轴的偏移量
58         popWindow.showAtLocation(inflater.inflate(R.layout.addfriend_layout, null), Gravity.CENTER, 0, 0);

代码里的解释已经很详尽了,这也是我学着写的 ,然后弹出框的点击事件这样写就可以了,千万不要在xml里直接使用android:onClick=“click1”这样,然后直接在主界面里,用

public void click1(View v){}这样写,因为view指的并不是弹出框的布局xml,因此不会做出响应

时间: 2024-11-07 13:31:25

安卓开发笔记——PopupWindow,做出如弹出框效果的相关文章

Axure 动态面板实现弹出框效果

今天在画原型图的时候遇到了个弹出框效果的实现,感觉挺有意思的,拿出来share下~ 如图:当我点击删除按钮后,如果用户选择删除,则要求要弹出一个对话框来让用户输入处理备注,如果不要删除,则点击取消: 首先描述下大致思路,我在页面上加上一个动态面板,然后为这个动态面板加上两个状态,一个是显示弹出框,另一个是隐藏弹窗口. 下面是弹出对话框的两个状态的设计: 隐藏状态的动态面板设置为空白,这样当切换到这个状态时就看不到任何东西. 然后为删除按钮添加用例: 注意,这里是当发生单击事件的时候弹出动态面板,

jquery 弹出框效果

html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>弹出框效果</title> <script type="text/javascript" src="js/jquery-3.0.0.min.js" ></script> <script type="tex

bootstrip 实现弹出框效果

modal是Bootstrap提供的一个“窗口组件”,可以配合js实现弹出窗口的效果. modal的class是“modal”,其中必须包含三个div部分,属性分别问modal-header,modal-body,modal-footer. 同时modal可以用来放置注册表单,示例如下: [html] view plaincopyprint? <section> <div class="row"> <div class="span12"

代码录播:jQueryMobile 实现一个简单的弹出框效果

今天给大家带来的是 jQueryMobile 实现一个简单的弹出框效果,有兴趣的童鞋可以试试哦~ ^_^ 阅读原文:www.gbtags.com

iOS开发- 自己主动消失的弹出框

- (void)timerFireMethod:(NSTimer*)theTimer//弹出框 { UIAlertView *promptAlert = (UIAlertView*)[theTimer userInfo]; [promptAlert dismissWithClickedButtonIndex:0 animated:NO]; promptAlert =NULL; } - (void)showAlert:(NSString *) _message{//时间 UIAlertView *

【代码笔记】轮询弹出框

一,效果图. 二,工程图. 三,代码. RootViewController.m #import "RootViewController.h" //加入弹出框的头文件 #import "MPNotificationView.h" @interface RootViewController () @end @implementation RootViewController - (id)initWithNibName:(NSString *)nibNameOrNil

自定义弹出框效果

对网站而言,弹出框是比较常见的.或是给出用户操作提示,或是通过弹出框打开一个小窗口以提示信息,或是给出错误警示等等. 但是由于浏览器自带的弹出窗口alert , confirm , prompt样式比较单调,且不同浏览器有不同的默认样式设置. 所以在日常工作中,给网站做一个自定义的弹出框十分必要.特别是富交互的网站 一.提示框 html部分: 1 <!--修改弹窗--> 2 <div class="pop-alert" id="pop" style

toast弹出框效果

js代码 1 //toast弹出框 2 var layerTime; 3 function layer(txt, time) { 4 clearTimeout(layerTime); 5 var times = time || 2000; 6 $(".layer_wrap").remove(); 7 $("body").append('<div id="layer_wrap" class="layer_wrap">

蒙版弹出框效果

自定义 package cn.lxsdb.yyd.app.dialog;      import cn.lxsdb.yyd.app.R;   import cn.lxsdb.yyd.app.constants.AppIntent;   import android.app.Dialog;   import android.content.Context;   import android.content.Intent;   import android.os.Bundle;   import a