Android PopupWindow 的使用

在我理解其实PopupWindow其实类似于一个不能动的Widget(仅从显示效果来说!)。它是浮在别的窗口之上的.

下面我将给大家做一个简单的Demo,类似于音乐播放器的Widget的效果,点击Button的时候出来PopupWindow,首先我们看一下效果图:

下面是核心代码:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36


package
com.android.tutor; 

import
android.app.Activity; 

import
android.content.Context; 

import
android.os.Bundle; 

import
android.view.Gravity; 

import
android.view.LayoutInflater; 

import
android.view.View; 

import
android.view.View.OnClickListener; 

import
android.view.ViewGroup.LayoutParams; 

import
android.widget.Button; 

import
android.widget.PopupWindow; 

public
class
PopupWindowDemo
extends
Activity 
implements
OnClickListener{ 

    
private
Button btn; 

      

    
public
void
onCreate(Bundle savedInstanceState) { 

        
super
.onCreate(savedInstanceState); 

        
setContentView(R.layout.main); 

          

        
btn = (Button)findViewById(R.id.btn); 

        
btn.setOnClickListener(
this
); 

    

    
@Override

    
public
void
onClick(View v) { 

        
Context mContext = PopupWindowDemo.
this

        
if
(v.getId() == R.id.btn) { 

            
LayoutInflater mLayoutInflater = (LayoutInflater) mContext 

                    
.getSystemService(LAYOUT_INFLATER_SERVICE); 

            
View music_popunwindwow = mLayoutInflater.inflate( 

                    
R.layout.music_popwindow,
null
); 

            
PopupWindow mPopupWindow =
new
PopupWindow(music_popunwindwow, LayoutParams.FILL_PARENT, 

                    
LayoutParams.WRAP_CONTENT); 

              

            
mPopupWindow.showAtLocation(findViewById(R.id.main), Gravity.RIGHT|Gravity.BOTTOM,
0
,
0
); 

        

    

}

需要强调的是这里PopupWindow必须有某个事件触发才会显示出来,不然总会抱错,不信大家可以试试!

随着这个问题的出现,就会同学问了,那么我想初始化让PopupWindow显示出来,那怎么办了,不去寄托于其他点击事件。在这里我用了定时器Timer来实现这样的效果,当然这里就要用到Handler了:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57


package
com.android.tutor; 

import
java.util.Timer; 

import
java.util.TimerTask; 

import
android.app.Activity; 

import
android.content.Context; 

import
android.os.Bundle; 

import
android.os.Handler; 

import
android.os.Message; 

import
android.view.Gravity; 

import
android.view.LayoutInflater; 

import
android.view.View; 

import
android.view.ViewGroup.LayoutParams; 

import
android.widget.PopupWindow; 

public
class
PopupWindowDemo
extends
Activity{ 

    
private
Handler mHandler =
new
Handler(){ 

          

        
public
void
handleMessage(Message msg) { 

            
switch
(msg.what) { 

            
case
1

                
showPopupWindow(); 

                
break

            

        
}; 

    
}; 

      

    
public
void
onCreate(Bundle savedInstanceState) { 

        
super
.onCreate(savedInstanceState); 

        
setContentView(R.layout.main); 

          

        
//create the timer   

        
Timer timer =
new
Timer(); 

        
timer.schedule(
new
initPopupWindow(),
100
); 

    

      

    
private
class
initPopupWindow
extends
TimerTask{ 

        
@Override

        
public
void
run() { 

              

            
Message message =
new
Message(); 

            
message.what =
1

            
mHandler.sendMessage(message); 

              

        
}        

    

      

      

    
public
void
showPopupWindow() { 

        
Context mContext = PopupWindowDemo.
this

        
LayoutInflater mLayoutInflater = (LayoutInflater) mContext 

                
.getSystemService(LAYOUT_INFLATER_SERVICE); 

        
View music_popunwindwow = mLayoutInflater.inflate( 

                
R.layout.music_popwindow,
null
); 

        
PopupWindow mPopupWindow =
new
PopupWindow(music_popunwindwow, 

                
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 

        
mPopupWindow.showAtLocation(findViewById(R.id.main), Gravity.CENTER,
0
,
0
); 

    

}

效果如下图:

时间: 2024-11-10 07:32:21

Android PopupWindow 的使用的相关文章

Android popupwindow以及windowManager总结——实现悬浮效果

Android有三类窗口 应用程序窗口 (Application Window): 包括所有应用程序自己创建的窗口,以及在应用起来之前系统负责显示的窗口. 子窗口(Sub Window):比如应用自定义的对话框,或者输入法窗口,子窗口必须依附于某个应用窗口(设置相同的token). 系 统窗口(System Window): 系统设计的,不依附于任何应用的窗口,比如说,状态栏(Status Bar), 导航栏(Navigation Bar), 壁纸(Wallpaper), 来电显示窗口(Phon

【Android】android PopupWindow实现从底部弹出或滑出选择菜单或窗口

转载自:android PopupWindow实现从底部弹出或滑出选择菜单或窗口 Android PopupWindow的使用和分析 Popupwindow的使用 PopupWindow用法

Android PopupWindow显示位置和显示大小

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:bac

Android PopupWindow 仿微信弹出效果

项目中,我需要PopupWindow的时候特别多,这个东西也特别的好使,所以我今天给大家写一款PopupWindow 仿微信弹出效果,这样大家直接拿到项目里就可以用了!首先让我们先看效果: 那么我首先先看下布局代码非常简单:如下 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pop_layout" android:layout_

Android Popupwindow 拖动

版本:1.0 日期:2014.4.29 版权:© 2014 kince 转载注明出处 关于View的拖动大家应该比较了解了,比如对一个控件IamgeView拖动,或者一个视图View拖动,实现方式也很容易,继承OnTouchListener接口,然后重写onTouch方法,在触屏事件进行处理即可.但是Popupwindow如何实现拖动呢,我们都知道它和普通的View不一样,因为它不是继承于View类的,但是它的实现却是和View密切相关的,因为我们都知道Android视图的显示都是由View来处

关于Android PopupWindow中实用Spinner控件点击APP Crash情况整理!

场景异常信息如下: android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:646) at android.view.WindowManagerGlobal.addView(Wi

android popupwindow 位置显示

1.在控件的上方: private void showPopUp(View v) { LinearLayout layout = new LinearLayout(this); layout.setBackgroundColor(Color.GRAY); TextView tv = new TextView(this); tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT

android:PopupWindow的使用场景和注意事项

1.PopupWindow的特点 借用Google官方的说法: "A popup window that can be used to display an arbitrary view. The popup window is a floating container that appears on top of the current activity." 也就是说.popupwindow是activity上方的一个悬浮容器.它能够显示随意的视图View,非常霸气的样子. 以下看一

Android popupwindow使用心得(一)

最近项目中好多地方用到popupwindow,感觉这个控件还是非常重要的.所以把使用心得总结下,废话不多说,直接上代码. public class MainActivity extends Activity { /** * 选择按钮 */ private Button mSelectTypeBtn; /** * 显示选择的内容 */ private TextView mSelectedType; private PopupWindow mPopupWindow; @Override protec

android PopupWindow实现从底部弹出或滑出选择菜单或窗口

本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计.弹出效果主要使用了translate和alpha样式实现,具体实习如下: 第一步:设计弹出窗口xml: Xml代码   <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&qu