android 仿 微信带尖角的popwindow


最后的结果就是上图的样式,

首先要有个上图的背景图,其他就很简单。

下面是代码

首先pop的布局



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:background="@drawable/menu_down"
              android:orientation="vertical" >

        <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="30dp"
                android:id="@+id/layout_station"

                android:layout_marginTop="10dp"
                android:padding="5dp">

                <ImageView
                        android:layout_width="15dp"
                        android:layout_height="15dp"
                        android:layout_marginLeft="7dp"
                        android:scaleType="fitCenter"
                        android:layout_centerVertical="true"
                        android:background="@drawable/find_serve_white"
                        android:id="@+id/imageView29"/>

                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/white"
                        android:textSize="14dp"
                        android:layout_marginLeft="5dp"
                        android:layout_centerVertical="true"

                        android:text="服务站点"
                        android:layout_alignBottom="@+id/imageView29"
                        android:layout_toRightOf="@+id/imageView29"
                        />
        </RelativeLayout>

        <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="30dp"
                android:id="@+id/layout_drug"
                android:orientation="horizontal"

                android:padding="5dp">

                <ImageView
                        android:layout_width="15dp"
                        android:layout_height="15dp"
                        android:scaleType="fitCenter"
                        android:background="@drawable/find_drug_drug"
                        android:id="@+id/imageView30"
                        android:layout_marginLeft="7dp"
                        android:layout_centerVertical="true"

                        android:layout_alignParentTop="true" android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true" android:layout_marginStart="16dp"/>

                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/white"
                        android:textSize="14dp"
                        android:layout_marginLeft="5dp"
                        android:layout_centerVertical="true"

                        android:text="药品"
                        android:layout_alignParentTop="true"
                        android:layout_toRightOf="@+id/imageView30" android:layout_toEndOf="@+id/imageView30"/>
        </RelativeLayout>



        <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="30dp"
                android:id="@+id/layout_disease"
                android:orientation="horizontal"

                android:padding="5dp">

                <ImageView
                        android:layout_width="15dp"
                        android:layout_height="15dp"
                        android:scaleType="fitCenter"
                        android:background="@drawable/find_disease_white"
                        android:id="@+id/imageView31"
                        android:layout_centerVertical="true"

                        android:layout_marginLeft="7dp"
                        android:layout_alignParentTop="true"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"/>

                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/white"
                        android:textSize="14dp"
                        android:layout_marginLeft="5dp"
                        android:layout_centerVertical="true"

                        android:text="疾病"
                        android:layout_alignParentTop="true"
                        android:layout_toRightOf="@+id/imageView31" android:layout_toEndOf="@+id/imageView31"/>
        </RelativeLayout>

</LinearLayout> 

图片就不上传了 颜色大家也可以自己定


之后就是PopWinMenu 的类


public  class PopWinMenu extends PopupWindow {
    private View mainView;
    private RelativeLayout layoutStation, layoutDrug,layoutDis;

    public PopWinMenu(Activity paramActivity, View.OnClickListener paramOnClickListener, int paramInt1, int paramInt2){
        super(paramActivity);
        //窗口布局
        mainView = LayoutInflater.from(paramActivity).inflate(R.layout.layout_popmenu, null);
        //分享布局
        layoutStation = ((RelativeLayout)mainView.findViewById(R.id.layout_station));
        //复制布局
        layoutDrug = (RelativeLayout)mainView.findViewById(R.id.layout_drug);
        layoutDis = (RelativeLayout)mainView.findViewById(R.id.layout_disease);
        //设置每个子布局的事件监听器
        if (paramOnClickListener != null){
            layoutStation.setOnClickListener(paramOnClickListener);
            layoutDrug.setOnClickListener(paramOnClickListener);
            layoutDis.setOnClickListener(paramOnClickListener);

        }
        setContentView(mainView);
        //设置宽度
        setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
        //设置高度
        setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
        //设置显示隐藏动画
        setAnimationStyle(R.style.AnimTools);
        //设置背景透明
        setBackgroundDrawable(new ColorDrawable(0));
    }
}


最后就是在Activity中调用Pop了


popWinMenu = new PopWinMenu(getActivity(),ClickListenerMenu,
        searchLin.getWidth()/2,0);
int[] location = new int[2];
searchLin.getLocationOnScreen(location);
popWinMenu.showAtLocation(searchLin, Gravity.NO_GRAVITY, location[0],location[1]+searchLin.getHeight()-popWinMenu.getHeight());
spinnerImg.setClickable(false);

弹出框事件:

 /**弹出框的事件*/
    private View.OnClickListener ClickListenerMenu = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {

                case R.id.layout_station:
                    searchType=1;
                    spinner.setText("站点");
                    popWinMenu.dismiss();
                    spinnerImg.setClickable(true);


                    break;
                case R.id.layout_drug:
                    searchType=2;
                    spinner.setText("药品");

                    popWinMenu.dismiss();
                    spinnerImg.setClickable(true);


                    break;
                case R.id.layout_disease:
                    searchType=3;
                    spinner.setText("疾病");

                    popWinMenu.dismiss();
                    spinnerImg.setClickable(true);


                    break;
            }
        }
    };
好了 基本上都可以了。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值