Popupwindow的使用

来源:互联网 发布:d3.js圆形图 编辑:程序博客网 时间:2024/06/06 11:35

PopupWindow在Android.widget包下,项目中经常会使用到PopupWindow做菜单选项  PopupWindow这个类用来实现一个弹出框,以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。

效果图:


Java代码:

MainActivity.java

public class MainActivity extends Activityimplements OnClickListener {

 

         private PopupWindowmPopWindow;

         private View parentView;

         private Context context;

         ImageView mImageViewBar;

 

         @Override

         protected voidonCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

                   requestWindowFeature(Window.FEATURE_NO_TITLE);

                   setContentView(R.layout.activity_main);

                   context = this;

                   initView();

      }

 

      private voidinitView() {

        // TODOAuto-generated method stub

          parentView =getLayoutInflater().inflate(R.layout.activity_main,null);

          mImageViewBar =(ImageView) findViewById(R.id.menu);

          mImageViewBar.setOnClickListener(this);

          showPopupWindow();

     }

 

      private voidshowPopupWindow() {

           LayoutInflater inflater = (LayoutInflater)context

            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

          View contentView =inflater.inflate(R.layout.popuplayout,null);

          mPopWindow = newPopupWindow(contentView);

          mPopWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);

          mPopWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

          mPopWindow = newPopupWindow();

          // 设置SelectPicPopupWindowView

          mPopWindow.setContentView(contentView);

          // 设置SelectPicPopupWindow弹出窗体的宽

          mPopWindow.setWidth(LayoutParams.WRAP_CONTENT);

          // 设置SelectPicPopupWindow弹出窗体的高

          mPopWindow.setHeight(LayoutParams.WRAP_CONTENT);

          // 设置SelectPicPopupWindow弹出窗体可点击

         mPopWindow.setFocusable(true);

         mPopWindow.setOutsideTouchable(true);

         // 刷新状态

         mPopWindow.update();

         // 实例化一个ColorDrawable颜色为半透明

         ColorDrawable dw = newColorDrawable(0000000000);

         // back键和其他地方使其消失,设置了这个才能触发OnDismisslistener,设置其他控件变化等操作

         mPopWindow.setBackgroundDrawable(dw);

         contentView.findViewById(R.id.memu1).setOnClickListener(this);

         contentView.findViewById(R.id.memu2).setOnClickListener(this);

         contentView.findViewById(R.id.memu3).setOnClickListener(this);

      }

 

       @Override

      public voidonClick(View v) {

         int id =v.getId();

         switch (id) {

           case R.id.menu:

                 mPopWindow.showAsDropDown(mImageViewBar);

                 break;

           case R.id.memu1: {

                 Toast.makeText(context,"消息", Toast.LENGTH_SHORT).show();

                 mPopWindow.dismiss();

               }

                break;

           case R.id.memu2: {

                Toast.makeText(context,"收藏", Toast.LENGTH_SHORT).show();

                mPopWindow.dismiss();

              }

               break;

           case R.id.memu3: {

                Toast.makeText(context,"首页", Toast.LENGTH_SHORT).show();

                mPopWindow.dismiss();

              }

               break;

             }

      }

  

      @Override

       protected voidonDestroy() {

           // TODOAuto-generated method stub

            super.onDestroy();

           mPopWindow.dismiss();

     }

  }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="#FFFFFF"

    android:orientation="vertical">

 

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:background="#E4E4E4"

        android:minHeight="55dp">

 

        <ImageView

            android:layout_width="20dp"

            android:layout_height="20dp"

            android:layout_centerVertical="true"

            android:layout_marginLeft="8dp"

            android:layout_marginRight="5dp"

            android:focusable="true"

            android:src="@drawable/abc_ic_ab_back_mtrl_am_alpha"/>

 

        <ImageView

            android:id="@+id/menu"

            android:layout_width="20dp"

            android:layout_height="20dp"

            android:layout_alignParentRight="true"

            android:layout_centerVertical="true"

            android:layout_marginRight="9dp"

            android:src="@drawable/top_arrow_message1"/>

    </RelativeLayout>

 

</LinearLayout>

popuplayout.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:gravity="center"

    android:orientation="vertical">

 

    <LinearLayout

        android:layout_width="120dp"

        android:layout_height="130dp"

        android:layout_marginRight="2dp"

        android:background="@drawable/danchu"

        android:gravity="center_vertical"

        android:orientation="vertical">

 

        <RelativeLayout

            android:id="@+id/memu1"

            android:layout_width="wrap_content"

            android:layout_height="30dp"

            android:layout_marginTop="5dp"

            android:gravity="center_vertical">

 

            <ImageView

                android:id="@+id/xiaoxi"

                android:layout_width="20dp"

                android:layout_height="20dp"

                android:layout_marginLeft="10dp"

                android:src="@drawable/android_arrow_application"/>

 

            <TextView

                android:id="@+id/pop_computer"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginLeft="10dp"

                android:layout_toRightOf="@+id/xiaoxi"

                android:text="消息"

                android:textColor="#FFFFFF"/>

        </RelativeLayout>

 

        <View

            android:layout_width="wrap_content"

            android:layout_height="1dp"/>

 

        <RelativeLayout

            android:id="@+id/memu2"

            android:layout_width="wrap_content"

            android:layout_height="30dp"

            android:layout_marginTop="5dp"

            android:gravity="center_vertical">

 

            <ImageView

                android:id="@+id/shanchu"

                android:layout_width="20dp"

                android:layout_height="20dp"

                android:layout_marginLeft="10dp"

                android:src="@drawable/android_arrow_profitbillsm"/>

 

            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginLeft="10dp"

                android:layout_toRightOf="@+id/shanchu"

                android:text="收藏"

                android:textColor="#FFFFFF"/>

        </RelativeLayout>

 

        <View

            android:layout_width="wrap_content"

            android:layout_height="1dp"/>

 

        <RelativeLayout

            android:id="@+id/memu3"

            android:layout_width="wrap_content"

            android:layout_height="30dp"

            android:layout_marginBottom="5dp"

            android:layout_marginTop="5dp"

            android:gravity="center_vertical">

 

            <ImageView

                android:id="@+id/dianjifanhui"

                android:layout_width="18dp"

                android:layout_height="20dp"

                android:layout_marginLeft="10dp"

                android:src="@drawable/dir15"/>

 

            <TextView

                android:id="@+id/pop_manage"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginLeft="10dp"

                android:layout_toRightOf="@+id/dianjifanhui"

                android:text="首页"

                android:textColor="#FFFFFF"/>

        </RelativeLayout>

 

        <View

            android:layout_width="wrap_content"

            android:layout_height="1dp"/>

    </LinearLayout>

 

</LinearLayout>


项目源码:

Eclipse: http://download.csdn.net/detail/dickyqie/9615658

AndroidStudio: https://github.com/DickyQie/android-basic-control







0 0