zoukankan      html  css  js  c++  java
  • Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)

    PopupWindow是一个可以用来显示一个任意的视图的弹出窗口,他需要完全依赖layout布局。

    它没什么界面,在弹出的窗口中完全显示布局中的控件。

    上面两个美女头就是弹窗PopupWindow显示的内容。是两个Button。

    具体实现:

    注意:那三个Button不能和普通的Button一样通过findViewById()方法获得,必须首先说的Button所在的视图,View popview = layoutInflater.inflate(R.layout.poplayout, null);

    我的Button在poplayout.xml中。最后通过button1 = (Button) popview.findViewById(R.id.button1)获得。

    另外一点就是:不要在oncreate()中获得Button,而是像我一样在onclick方法下获得,和popupwindow一起。这一点不一定正确。

    为什么要提呢?因为我在oncreate()中获得Button时,button的点击事件不能用,我也不是很清楚。那位大牛要是知道的话,可以告诉我一下。

    showAtLocation(findViewById(R.id.edit_layout), Gravity.BOTTOM,0, 0);  

    设置弹窗的位置:

    第一个参数是弹窗父控件的布局;

    第二个参数是位置如左,右,上部,下部等;

    第三个参数是X方向的偏移量;

    第四个参数是Y方向的偏移量。

    [java] view plaincopy
     
    1. package xiaosi.popwindow;  
    2.   
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.Gravity;  
    6. import android.view.LayoutInflater;  
    7. import android.view.View;  
    8. import android.view.View.OnClickListener;  
    9. import android.view.WindowManager.LayoutParams;  
    10. import android.widget.Button;  
    11. import android.widget.PopupWindow;  
    12. import android.widget.Toast;  
    13.   
    14. public class PopwindowActivity extends Activity implements OnClickListener  
    15. {  
    16.     /** Called when the activity is first created. */  
    17.     private Button button = null;  
    18.     private Button button1 = null;  
    19.     private Button button2 = null;  
    20.     private Button button3 = null;  
    21.   
    22.     @Override  
    23.     public void onCreate(Bundle savedInstanceState)  
    24.     {  
    25.         super.onCreate(savedInstanceState);  
    26.         setContentView(R.layout.main);  
    27.         button = (Button) findViewById(R.id.button);  
    28.         button.setOnClickListener(this);  
    29.     }  
    30.   
    31.     public void onClick(View arg0)  
    32.     {  
    33.         if (arg0.getId() == R.id.button)  
    34.         {  
    35.             LayoutInflater layoutInflater = (LayoutInflater) (PopwindowActivity.this)  
    36.                     .getSystemService(LAYOUT_INFLATER_SERVICE);  
    37.             // 获取自定义布局文件poplayout.xml的视图  
    38.             View popview = layoutInflater.inflate(R.layout.poplayout, null);  
    39.             PopupWindow popWindow = new PopupWindow(popview,  
    40.                     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
    41.             //规定弹窗的位置  
    42.             popWindow.showAtLocation(findViewById(R.id.main), Gravity.BOTTOM,  
    43.                     0, 0);  
    44.             //PopupWindow里的两个Button  
    45.             button1 = (Button) popview.findViewById(R.id.button1);  
    46.             button1.setOnClickListener(this);  
    47.             button2 = (Button) popview.findViewById(R.id.button2);  
    48.             button2.setOnClickListener(this);  
    49.         }  
    50.         else if (arg0.getId() == R.id.button1)  
    51.         {  
    52.             Toast.makeText(PopwindowActivity.this, "button1", Toast.LENGTH_LONG)  
    53.                     .show();  
    54.         }  
    55.         else if (arg0.getId() == R.id.button2)  
    56.         {  
    57.             Toast.makeText(PopwindowActivity.this, "button2", Toast.LENGTH_LONG)  
    58.                     .show();  
    59.         }  
    60.     }  
    61. }  



    poplayout.xml

    [java] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="wrap_content"  
    4.     android:layout_height="wrap_content"  
    5.     android:gravity="center_horizontal"  
    6.     android:orientation="horizontal" >  
    7.   
    8.     <Button  
    9.         android:id="@+id/button1"  
    10.         android:layout_width="wrap_content"  
    11.         android:layout_height="wrap_content"  
    12.         android:background="@drawable/colorframe_1" />  
    13.   
    14.     <Button  
    15.         android:id="@+id/button2"  
    16.         android:layout_width="wrap_content"  
    17.         android:layout_height="wrap_content"  
    18.         android:background="@drawable/colorframe_3" />  
    19.   
    20. </LinearLayout>  


    main.xml

    [java] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:id="@+id/main"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     android:orientation="vertical"   
    7.     android:background="@drawable/background">  
    8.   
    9.     <Button  
    10.         android:id="@+id/button"  
    11.         android:layout_width="fill_parent"  
    12.         android:layout_height="wrap_content"  
    13.         android:text="点击查看效果" />  
    14.     <ImageView   
    15.         android:layout_width="fill_parent"  
    16.         android:layout_height="wrap_content"  
    17.         android:src="@drawable/a" />  
    18.   
    19. </LinearLayout>  



    以上只是用来学习之用,拿出来和大家一起分享一下。

    有想要源代码的给我留言。

    http://blog.csdn.net/sjf0115/article/details/7339914

  • 相关阅读:
    图像处理基础2
    c++之morphologyEx(形态学操作)
    图像处理基础
    Mac 安装QT
    Qmake VS Cmake
    g++,qmake,cmake区别
    C++11中的匿名函数(lambda函数,lambda表达式)
    c++相关要点
    spritekit基础节点学习
    spriteKit简单学习
  • 原文地址:https://www.cnblogs.com/daishuguang/p/3873704.html
Copyright © 2011-2022 走看看