package com.partynetwork.myview.wheelview; import com.partynetwork.iparty.R; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.os.Handler; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.PopupWindow; public class WheelPicker extends PopupWindow { private View view; /** 左边的按钮 */ private Button leftBtn; /** 右边的按钮 */ private Button rightBtn; /** 第一个滚轮 */ private WheelView firstWheel; /** 第二个滚轮 */ private WheelView secondWheel; /** 第三个滚轮 */ private WheelView thirdWheel; private Context mContext; private int whellNumber; private WheelAdapter wheelAdapter; private WheelListener wheelListener; public WheelPicker(Context context,final int whellNumber, WheelAdapter adapter, final WheelListener wheelListener) { super(context); mContext = context; this.whellNumber=whellNumber; this.wheelAdapter=adapter; this.wheelListener=wheelListener; view = LayoutInflater.from(context).inflate(R.layout.wheelview_three, null); initView(); initWheel(); // 设置SelectPicPopupWindow的View setContentView(view); // 设置SelectPicPopupWindow弹出窗体的宽 setWidth(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体的高 setHeight(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体可点击 setFocusable(true); // 设置SelectPicPopupWindow弹出窗体动画效果 setAnimationStyle(R.style.AnimBottom); // 实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0x00000000); // 设置SelectPicPopupWindow弹出窗体的背景 setBackgroundDrawable(dw); } private void initView() { leftBtn = (Button) view.findViewById(R.id.left_btn); rightBtn = (Button) view.findViewById(R.id.right_btn); firstWheel = (WheelView) view.findViewById(R.id.first_wheel); secondWheel = (WheelView) view.findViewById(R.id.second_wheel); thirdWheel = (WheelView) view.findViewById(R.id.third_wheel); } /** * 初始化滚轮 * * @param wheelAdapter */ private void initWheel() { firstWheel.setAdapter(wheelAdapter); if (whellNumber == 1) { secondWheel.setVisibility(View.GONE); thirdWheel.setVisibility(View.GONE); } else if (whellNumber == 2) { firstWheel.addChangingListener(new OnWheelChangedListener() { public void onChanged(WheelView wheel, int oldValue, int newValue) { secondWheel.setAdapter(wheelListener.onChange(wheel, oldValue, newValue)); } }); // 选择第二项 secondWheel.setVisibility(View.VISIBLE); thirdWheel.setVisibility(View.GONE); } firstWheel.setCurrentItem(3); // 事件监听 rightBtn.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String text = ""; if (whellNumber == 1) { text = firstWheel.getTextItem(firstWheel.getCurrentItem()); } else if (whellNumber == 2) { text = firstWheel.getTextItem(firstWheel.getCurrentItem()) + "-" + secondWheel.getTextItem(secondWheel .getCurrentItem()); } wheelListener.confirm(text); if (isShowing()) { dismiss(); } } }); leftBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { wheelListener.cancel(); if (isShowing()) { dismiss(); } } }); // view.startAnimation(AnimationUtils.loadAnimation(mContext, // R.anim.push_bottom_in)); } public void showAt(View view) { showAtLocation(view, Gravity.BOTTOM, 0, 0); } /** * * com.dongcemedia.myview.wheelview.WheelListener * * @author 沈跃双 Create at 2014-1-9 下午3:24:55 */ public interface WheelListener { /** * 取消按钮 */ public abstract void cancel(); /** * 确定按钮 * * @param str */ public abstract void confirm(String str); /** * 两个滚轮时,第二个滚轮的适配器对象 * * @param wheel * @param oldValue * @param newValue */ public abstract WheelAdapter onChange(WheelView wheel, int oldValue, int newValue); } }