zoukankan      html  css  js  c++  java
  • 仿iOS底部弹出popUpWindow

    上面为弹出来的效果

    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="wrap_content"
        android:padding="5dp"
        android:orientation="vertical">
    
        <LinearLayout
            android:padding="2dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_horizontal"
            android:background="@drawable/popwindow_bg"//使用shape画出圆角矩形,边框为为灰色,背景为白色。颜色不要再线性布局中设置,也会掩盖圆角矩形。
            android:orientation="vertical">
    
            <TextView
                android:id="@+id/takePhoto"
                style="@style/bottom_pop_textview"//宽不能设为match_parent,否则外层的圆角矩形会被遮盖。
                android:text="拍照"
    
                />
            <TextView
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@android:color/darker_gray"
                />
            <TextView
                android:id="@+id/openPhotos"
                style="@style/bottom_pop_textview"
                android:layout_marginTop="1dp"
                android:text="打开相册"
                />
    
    
        </LinearLayout>
        <LinearLayout
            android:padding="2dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_horizontal"
            android:layout_marginTop="10dp"
            android:background="@drawable/popwindow_bg"//使用shape画出圆角矩形,边框为为灰色,背景为白色。
            android:orientation="vertical">
            <TextView
                android:id="@+id/cancel"
                style="@style/bottom_pop_textview"
                android:text="取消"
                />
        </LinearLayout>
    
    </LinearLayout>

    shape画出圆角矩形 代码:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle"
        >
        <stroke android:width="1dip" android:color="#ffbbbbbb"/>
        <corners android:topLeftRadius="15dip"
            android:topRightRadius="15dip"
            android:bottomLeftRadius="15dip"
            android:bottomRightRadius="15dip" />
        <solid android:color="@android:color/white"/>
    </shape>

    从底部弹出popupwindow:

    /**
         * 从底部弹出popupwindow
         */
        private void showBottomPop(View parent) {
            final View popView = View.inflate(getActivity(), R.layout.bottom_pop_layout, null);
            showAnimation(popView);//开启动画
            PopupWindow mPopWindow = new PopupWindow(popView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            clickPopItem(popView, mPopWindow);//条目的点击
            mPopWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            mPopWindow.showAtLocation(parent,
                    Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
            mPopWindow.setOutsideTouchable(true);
            mPopWindow.setFocusable(true);
            mPopWindow.update();
            // 设置背景颜色变暗
            WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
            lp.alpha = 0.7f;
            getActivity().getWindow().setAttributes(lp);
            mPopWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
    
                @Override
                public void onDismiss() {
                    WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
                    lp.alpha = 1f;
                    getActivity().getWindow().setAttributes(lp);
                }
            });
        }

    弹出的动画:

    /**
         * 给popupwindow添加动画
         *
         * @param popView
         */
        private void showAnimation(View popView) {
            AnimationSet animationSet = new AnimationSet(false);
            AlphaAnimation alphaAnimation = new AlphaAnimation(0f, 1.0f);
            alphaAnimation.setDuration(300);
            TranslateAnimation translateAnimation = new TranslateAnimation(
                    Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f,
                    Animation.RELATIVE_TO_SELF, 1f, Animation.RELATIVE_TO_SELF, 0f
            );
            translateAnimation.setDuration(300);
            animationSet.addAnimation(alphaAnimation);
            animationSet.addAnimation(translateAnimation);
            popView.startAnimation(animationSet);
        }
  • 相关阅读:
    41. 缺失的第一个正数
    101. 对称二叉树 38. 外观数列
    leecode 394. 字符串解码 java版本
    敏感词过滤(java)
    vue项目中async、await+promise来将异步转为同步
    vue项目目录详解及自定义事件
    如何搭建vue项目
    Sublime Text 3 离线安装插件
    拿到别人的vue项目如何跑起来?
    js设置定时器和清除定时器
  • 原文地址:https://www.cnblogs.com/epmouse/p/5374707.html
Copyright © 2011-2022 走看看