package com.gzsll.hupu.widget; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.PopupWindow; import com.gzsll.hupu.R; public class PagePicker extends PopupWindow implements View.OnClickListener { private OnJumpListener mListener; private MaterialNumberPicker picker; public PagePicker(Context context) { this(context, null); } public PagePicker(Context context, AttributeSet attrs) { super(context, attrs); this.setWidth(ViewGroup.LayoutParams.FILL_PARENT); this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); this.setBackgroundDrawable(new BitmapDrawable());// 这样设置才能点击屏幕外dismiss窗口 this.setOutsideTouchable(true); this.setAnimationStyle(R.style.popwindow_anim_style); LayoutInflater mLayoutInflater = LayoutInflater.from(context); View rootView = mLayoutInflater.inflate(R.layout.page_picker_view, null); rootView.findViewById(R.id.btCancel).setOnClickListener(this); rootView.findViewById(R.id.btFirst).setOnClickListener(this); rootView.findViewById(R.id.btJump).setOnClickListener(this); rootView.findViewById(R.id.btLast).setOnClickListener(this); picker = (MaterialNumberPicker) rootView.findViewById(R.id.picker); setContentView(rootView); } void jump() { int page = picker.getValue(); if (mListener != null) { mListener.OnJump(page); } dismiss(); } void end() { int page = picker.getMaxValue(); if (mListener != null) { mListener.OnJump(page); } dismiss(); } void first() { int page = picker.getMinValue(); if (mListener != null) { mListener.OnJump(page); } dismiss(); } public void setMin(int min) { picker.setMinValue(min); } public void setMax(int max) { picker.setMaxValue(max); } public void setValue(int value) { picker.setValue(value); } public void setOnJumpListener(OnJumpListener listener) { mListener = listener; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btCancel: dismiss(); break; case R.id.btFirst: first(); break; case R.id.btLast: end(); break; case R.id.btJump: jump(); break; } } public interface OnJumpListener { void OnJump(int page); } }