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);
}
}