package cn.com.basic.face.dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.PopupWindow; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.bsk.zhangbo.demoforbsk.R; import cn.com.basic.face.base.MainActivity; import cn.com.basic.face.discern.common.CommonVariables; import cn.com.basic.face.fragment.CheckInFragment; import cn.com.basic.face.service.DictionaryMng; import cn.com.basic.face.util.Constant; import cn.com.basic.face.util.OkClickedListener; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; import cn.com.basic.face.dialog.wheelview.adapter.BaseWheelAdapter; import cn.com.basic.face.dialog.wheelview.widget.WheelView; import java.util.ArrayList; import java.util.List; import cn.com.basic.face.discern.entity.Dictionary; public class SelectDialog extends PopupWindow { private final View parentView; @ViewInject(R.id.dialog_select_title) private TextView dialog_select_title; @ViewInject(R.id.dialog_select_list_view) private WheelView dialog_select_list_view; @ViewInject(R.id.dialog_select_add_separator) private View dialog_select_add_separator; @ViewInject(R.id.dialog_select_add) private TextView dialog_select_add; private List list = new ArrayList(); public static List visitorTypeList = new ArrayList(); public static List genderList = new ArrayList(); public static List idTypeList = new ArrayList(); public static List visitReasonList = new ArrayList(); private static List resolutionList = new ArrayList(); private static List protocolList = new ArrayList(); private static List cameraBrandList = new ArrayList(); private int type; public static void setVisitorTypeList(List visitorTypeList) { SelectDialog.visitorTypeList = visitorTypeList; } public static void setGenderList(List genderList) { SelectDialog.genderList = genderList; } public static void setIdTypeList(List idTypeList) { SelectDialog.idTypeList = idTypeList; } public SelectDialog(View parentView, int type, OkClickedListener okButtonClickedListener, String defaultValue) { this.type = type; this.parentView = parentView; View view = LayoutInflater.from(MainActivity.getInstance()).inflate(R.layout.dialog_select,null); ViewUtils.inject(this, view); setTitleAndList(type); WheelView.WheelViewStyle style = new WheelView.WheelViewStyle(); style.selectedTextColor = Color.parseColor("#11c3e3"); style.textColor = Color.parseColor("#bcc6cf"); style.selectedTextSize = 22; style.textSize = 16; style.holoBorderColor = Color.parseColor("#11c3e3"); if(type == Constant.DialogSelectType.VISIT_REASON || type == Constant.DialogSelectType.PROTOCOL || type == Constant.DialogSelectType.RESOLUTION || type == Constant.DialogSelectType.CAMERA_BRAND ) { dialog_select_add_separator.setVisibility(View.VISIBLE); dialog_select_add.setVisibility(View.VISIBLE); } dialog_select_list_view.setWheelAdapter(new WheelAdapter(MainActivity.getInstance())); dialog_select_list_view.setSkin(WheelView.Skin.Holo); if (list != null && list.size() > 0) { dialog_select_list_view.setWheelData(list); Object itemObj = list.get(0); if (itemObj instanceof String && defaultValue != null && !"".equals(defaultValue)) { int selected = 0; for (int i = 0; i < list.size(); i++) { if (defaultValue.equals(list.get(i))) { selected = i; break; } } dialog_select_list_view.setSelection(selected); } } dialog_select_list_view.setWheelSize(5); dialog_select_list_view.setBackgroundResource(R.color.colorBackground); dialog_select_list_view.setStyle(style); view.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { View popLayout = view.findViewById(R.id.dialog_select_linear_layout); int top = popLayout.getTop(); int bottom = popLayout.getBottom(); int left = popLayout.getLeft(); int right = popLayout.getRight(); int y = (int) motionEvent.getY(); int x = (int) motionEvent.getX(); if (motionEvent.getAction() == MotionEvent.ACTION_UP){ if (y bottom){ dismiss(); } if (x < left || x > right){ dismiss(); } } return true; } }); setOutsideTouchable(true); this.setContentView(view); this.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT); this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT); this.setFocusable(true); this.setBackgroundDrawable(new ColorDrawable(0x7f000000)); this.setAnimationStyle(R.style.PopupAnimation); okButtonClickedListeners.add(okButtonClickedListener); this.showAtLocation(parentView, Gravity.CENTER,0,0); } @OnClick(R.id.dialog_select_ok) public void dialog_select_ok_click(View view) { for (OkClickedListener okButtonClickedListener : okButtonClickedListeners) { if (dialog_select_list_view.getCurrentPosition() >= 0) { Object o = list.get(dialog_select_list_view.getCurrentPosition()); String value = ""; if (o instanceof Dictionary) { value = ((Dictionary) o).getName(); } else { value = o+""; } okButtonClickedListener.onSelected(value); } } dismiss(); } @OnClick(R.id.dialog_select_cancel) public void dialog_select_cancel_click(View view) { dismiss(); } private List okButtonClickedListeners = new ArrayList(); public void addOkButtonClickedListener(OkClickedListener okButtonClickedListener) { this.okButtonClickedListeners.add(okButtonClickedListener); } private void setTitleAndList(int type) { String tile = ""; switch (type) { case Constant.DialogSelectType.GENDER: tile = "性别"; list = genderList; break; case Constant.DialogSelectType.ID_TYPE: tile = "证件类型"; list = idTypeList; break; case Constant.DialogSelectType.VISITOR_TYPE: tile = "访客类型"; list = visitorTypeList; break; case Constant.DialogSelectType.VISIT_REASON: tile = "请选择访问事由"; list = visitReasonList; break; case Constant.DialogSelectType.RESOLUTION: tile = "请选择分辨率"; list = resolutionList; break; case Constant.DialogSelectType.PROTOCOL: tile = "请选择通讯"; list = protocolList; break; case Constant.DialogSelectType.CAMERA_BRAND: tile = "请选择摄像机品牌"; list = cameraBrandList; break; } dialog_select_title.setText(tile); } @OnClick(R.id.dialog_select_add) public void dialog_select_add_click(View view) { dismiss(); Toast.makeText(MainActivity.getInstance(), "添加", Toast.LENGTH_SHORT); new AddDialog(parentView, type, new OkClickedListener() { public void onSelected(String value) { CheckInFragment.getInstance().setVisitReasonText(value); switch (type) { case Constant.DialogSelectType.VISIT_REASON: CheckInFragment.getInstance().setVisitReasonText(value); break; case Constant.DialogSelectType.RESOLUTION: DictionaryMng.getInstance().addDictionary(Constant.DialogSelectType.RESOLUTION, CommonVariables.DictionaryType.RESOLUTION, value); break; case Constant.DialogSelectType.PROTOCOL: DictionaryMng.getInstance().addDictionary(Constant.DialogSelectType.PROTOCOL, CommonVariables.DictionaryType.PROTOCOL, value); break; case Constant.DialogSelectType.CAMERA_BRAND: DictionaryMng.getInstance().addDictionary(Constant.DialogSelectType.CAMERA_BRAND, CommonVariables.DictionaryType.CAMERA_BRAND, value); break; } } }); } public static void setVisitReasonList(List visitReasonList) { SelectDialog.visitReasonList = visitReasonList; } public static void setResolutionList(List resolutionList) { SelectDialog.resolutionList = resolutionList; } public static void setProtocolList(List protocolList) { SelectDialog.protocolList = protocolList; } public static void setCameraBrandList(List cameraBrandList) { SelectDialog.cameraBrandList = cameraBrandList; } public static class WheelAdapter extends BaseWheelAdapter { private Context mContext; public WheelAdapter(Context context) { mContext = context; } @Override protected View bindView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(mContext).inflate(R.layout.dialog_row, null); viewHolder.textView = (TextView) convertView.findViewById(R.id.item_wheel_name); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.textView.setText(mList.get(position)+""); return convertView; } static class ViewHolder { TextView textView; } } }