zoukankan      html  css  js  c++  java
  • popupWindow 简单实现

    popupWindow实现

    window.xml //弹出的窗口的文件
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:background="#CCCCCC"  >
    
        <Button
            style="@style/menu_list"
            android:background="@android:color/transparent"
            android:id="@+id/food_order"
            android:layout_width="fill_parent"
            android:layout_height="70dp"
            android:gravity="center"
            android:text="@string/order"
            android:onClick="joinOrder" />
    
    </RelativeLayout>

    in.xml&out.xml放在res下anim(没有的话自己创建一个)文件夹下

    in.xml //显示窗口时的动作
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 定义从左向右进入的动画 -->
        <translate
        	android:fromXDelta="-100%"
        	android:toXDelta="0"
        	android:duration="500"/>
    </set>
    out.xml //窗口消失时的动作
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 定义从右向左动画退出动画 -->
        <translate
        	android:fromXDelta="0"
        	android:toXDelta="-100%"
        	android:duration="500"/>
    </set>
    MainActivity.java //这个不用解释

    在你触发事件处理的地方加上以下代码

    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        //点一下出现再点其他地方就消失
        if (null != popupWindow) {
                popupWindow.dismiss();
                return;
            } else {
                initPopuptWindow();
        }
        popupWindow.showAsDropDown(view);   //private PopupWindow popupWindow;
    }
    /** 创建PopupWindow     */
        protected void initPopuptWindow() {
            // TODO Auto-generated method stub
    
            // 获取自定义布局文件window.xml的视图
            View popupWindow_view = getLayoutInflater().inflate(R.layout.window, null,
                    false);
            // 创建PopupWindow实例,200,70分别是宽度和高度
            popupWindow = new PopupWindow(popupWindow_view, 200, 70, true);
            // 设置动画效果
            popupWindow.setAnimationStyle(R.style.AnimationFade);//这里就用到in.xml&out.xml了,style.xml添加样式AnimationFade
            // 点击其他地方消失
            popupWindow_view.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    if (popupWindow != null && popupWindow.isShowing()) {
                        popupWindow.dismiss();
                        popupWindow = null;
                        }
                     return;
                }
    
            });
            // window.xml视图里面的控件
    
            Button order = (Button) popupWindow_view.findViewById(R.id.food_order);
            // window.xml视图里面的控件触发的事件
    
            order.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    // 这里可以执行相关操作
                    System.out.println("打开操作");
                    // 对话框消失
                    popupWindow.dismiss();
                }
            });
        }
    <style name="AnimationFade">
    	<!--   PopupWindow左右弹出的效果-->
    		<item name="android:windowEnterAnimation">@anim/in_lefttoright</item>
    		<item name="android:windowExitAnimation">@anim/out_righttoleft</item>
    </style>

     

  • 相关阅读:
    [LintCode] Read Characters From File
    [LintCode] Insert Node in a Binary Search Tree
    [LintCode] Validate Binary Search Tree
    [LintCode] Merge Intervals
    [LintCode] Valid Parentheses
    [LintCode] First Position Unique Character
    三十七.MySQL视图 MySQL存储过程
    三十六.MHA集群概述 、 部署MHA集群 测试配置
    三十五.MySQL读写分离 MySQL多实例 、MySQL性能调优
    三十四.MySQL主从同步 、主从同步模式
  • 原文地址:https://www.cnblogs.com/liu666bin/p/2818300.html
Copyright © 2011-2022 走看看