Android开发之 popupwindow



popupwindow是啥?


popupwindow是一种弹窗式控件,一个非常好实用的控件。。。。。


下面是具体实现的代码,而popupwindow在网上也有详解。。

package com.example.android_project_two;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Build;
import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.zking.db.DbHelper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2017/6/22 0022.
 */

public class TakePhotoPopWin extends PopupWindow{

    private Context mContext;
    private View view;
    private List<List<String>> list=new ArrayList<>();
    private ListView lv_take_list;
    private int anInt;
    private ViewPager viewPager1;





    public TakePhotoPopWin(){

    }


    public TakePhotoPopWin(Context mContext, View.OnClickListener itemsOnClick, final ViewPager viewPager, Map<Integer,Integer> mi, int datai) {

        viewPager1=viewPager;
        view = LayoutInflater.from(mContext).inflate(R.layout.take_photo_pop, null);

        GridLayout layout= (GridLayout) view.findViewById(R.id.gl_pop_layout);

        Log.i("text",mi+"");


        // 生成3个Button

        for ( int i = 1; i <=datai ; i++) {
                    final int ni=i;
                    if(mi.size()>0){

                        if(mi.get(i)!=null){
                            int ii=(int) mi.get(i);
                            if(ii==3){
                                Button btn1 = new Button(mContext);

                                btn1.setText(""+i);

                                int strokeWidth = 2; // 3dp 边框宽度
                                int roundRadius = 35; // 8dp 圆角半径
                                int strokeColor = Color.parseColor("#59C3FA");//边框颜色
                                int fillColor = Color.parseColor("#E7F7FD");//内部填充颜色

                                GradientDrawable gd = new GradientDrawable();//创建drawable

                                gd.setColor(fillColor);
                                gd.setCornerRadius(roundRadius);
                                gd.setStroke(strokeWidth, strokeColor);

                                btn1.setBackgroundDrawable(gd);

                                Resources s=mContext.getResources();
                                ColorStateList c=s.getColorStateList(R.color.button_text);

                                btn1.setTextColor(c);
                                layout.addView(btn1);

                                GridLayout.LayoutParams layoutParams = (GridLayout.LayoutParams) btn1.getLayoutParams();
                                layoutParams.setMargins(16,10,16,10);//4个参数按顺序分别是左上右下
                                btn1.setLayoutParams(layoutParams); //mView是控件

                                btn1.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        viewPager.setCurrentItem(ni-1);
                                        dismiss();
                                    }
                                });
                            }else if(ii==2){
                                Button btn1 = new Button(mContext);


                                btn1.setText(""+i);

                                int strokeWidth = 2; // 3dp 边框宽度
                                int roundRadius = 35; // 8dp 圆角半径
                                int strokeColor = Color.parseColor("#FE5A5B");//边框颜色
                                int fillColor = Color.parseColor("#FCE8E8");//内部填充颜色

                                GradientDrawable gd = new GradientDrawable();//创建drawable

                                gd.setColor(fillColor);
                                gd.setCornerRadius(roundRadius);
                                gd.setStroke(strokeWidth, strokeColor);

                                btn1.setBackgroundDrawable(gd);

                                Resources s=mContext.getResources();
                                ColorStateList c=s.getColorStateList(R.color.button_text1);

                                btn1.setTextColor(c);
                                layout.addView(btn1);

                                GridLayout.LayoutParams layoutParams = (GridLayout.LayoutParams) btn1.getLayoutParams();
                                layoutParams.setMargins(16,10,16,10);//4个参数按顺序分别是左上右下
                                btn1.setLayoutParams(layoutParams); //mView是控件

                                btn1.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        viewPager.setCurrentItem(ni-1);
                                        dismiss();
                                    }
                                });
                            }
                        }
                        else{
                            Button btn1 = new Button(mContext);
                            int strokeWidth = 2; // 3dp 边框宽度
                            int roundRadius = 35; // 8dp 圆角半径
                            int strokeColor = Color.parseColor("#E8E9EA");//边框颜色
                            int fillColor = Color.parseColor("#ffffff");//内部填充颜色

                            GradientDrawable gd = new GradientDrawable();//创建drawable

                            gd.setColor(fillColor);
                            gd.setCornerRadius(roundRadius);
                            gd.setStroke(strokeWidth, strokeColor);

                            btn1.setBackgroundDrawable(gd);

                            btn1.setText(""+i);
                            layout.addView(btn1);

                            GridLayout.LayoutParams layoutParams = (GridLayout.LayoutParams) btn1.getLayoutParams();
                            layoutParams.setMargins(16,10,16,10);//4个参数按顺序分别是左上右下
                            btn1.setLayoutParams(layoutParams); //mView是控件

                            btn1.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    viewPager.setCurrentItem(ni-1);
                                    dismiss();
                                }
                            });
                        }

                    }else{
                        Button btn1 = new Button(mContext);



                        int strokeWidth = 2; // 3dp 边框宽度
                        int roundRadius = 35; // 8dp 圆角半径
                        int strokeColor = Color.parseColor("#E8E9EA");//边框颜色
                        int fillColor = Color.parseColor("#ffffff");//内部填充颜色

                        GradientDrawable gd = new GradientDrawable();//创建drawable

                        gd.setColor(fillColor);
                        gd.setCornerRadius(roundRadius);
                        gd.setStroke(strokeWidth, strokeColor);

                        btn1.setBackgroundDrawable(gd);

                        btn1.setText(""+i);
                        layout.addView(btn1);

                        GridLayout.LayoutParams layoutParams = (GridLayout.LayoutParams) btn1.getLayoutParams();
                        layoutParams.setMargins(16,10,16,10);//4个参数按顺序分别是左上右下
                        btn1.setLayoutParams(layoutParams); //mView是控件

                        btn1.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                viewPager.setCurrentItem(ni-1);
                                dismiss();
                            }
                        });
                    }


        }




        this.setOutsideTouchable(true);
        this.view.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {

                int height = view.findViewById(R.id.pop_layout).getTop();

                int y = (int) event.getY();
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    if (y < height) {
                        dismiss();
                    }
                }
                return true;
            }
        });


    //设置弹出窗口特征
        // 设置视图
        this.setContentView(this.view);
        // 设置弹出窗体的宽和高
        this.setHeight(RelativeLayout.LayoutParams.WRAP_CONTENT);
        this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT);

        // 设置弹出窗体可点击
        this.setFocusable(true);

        // 实例一个ColorDrawable颜色为半透明
        ColorDrawable dw = new ColorDrawable(0xb0000000);
        // 设置弹出窗体的背景
        this.setBackgroundDrawable(dw);

        // 设置弹出窗体显示时的动画,从底部向上弹出
        this.setAnimationStyle(R.style.take_photo_anim);

    }








}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值