package cn.com.basic.face.widget; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.support.v7.widget.AppCompatTextView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.PopupWindow; import android.widget.RelativeLayout; import android.widget.TextView; import com.bsk.zhangbo.demoforbsk.R; import cn.com.basic.face.adapter.MyWheelAdapter; import cn.com.basic.face.listeners.OkButtonClickedListener; import cn.com.basic.face.util.CountryPresenter; import com.wx.wheelview.widget.WheelView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * Created by Sinoe on 2017/2/28. */ public class CountrySelectionDialog extends PopupWindow implements View.OnClickListener, WheelView.OnWheelItemSelectedListener { private Context mContext; private View view; private TextView mTvConfirm, mTvCancel; private WheelView mWheelViewTitle, mWheelViewName; private HashMap> countryData; private List countryWordList; private List countryList; private CountryPresenter countryPresenter; public CountrySelectionDialog(Context context, String[] countryWordData, List countryWordList, HashMap> countryData) { this.mContext = context; countryPresenter = new CountryPresenter(context); view = LayoutInflater.from(context).inflate(R.layout.dialog_country, null); mWheelViewTitle = (WheelView) view.findViewById(R.id.pop_country_title); mWheelViewTitle.setOnWheelItemSelectedListener(this); mWheelViewName = (WheelView) view.findViewById(R.id.pop_country_name); mWheelViewName.setOnWheelItemSelectedListener(this); mTvCancel = (TextView) view.findViewById(R.id.pop_country_cancel); mTvConfirm = (TextView) view.findViewById(R.id.pop_country_confirm); mTvCancel.setOnClickListener(this); mTvConfirm.setOnClickListener(this); //String[] countryWordData = DictionaryMng.countryWordData; this.countryWordList = countryWordList;//DictionaryMng.countryWordList; this.countryData = countryData;//DictionaryMng.countryData; countryList = countryData.get(countryWordList.get(mWheelViewTitle.getSelection())); mWheelViewTitle.setWheelAdapter(new MyWheelAdapter(context)); mWheelViewTitle.setSkin(WheelView.Skin.Holo); mWheelViewTitle.setWheelSize(5); mWheelViewTitle.setBackgroundResource(R.color.colorBackground); mWheelViewName.setWheelAdapter(new MyWheelAdapter(context)); mWheelViewName.setSkin(WheelView.Skin.Holo); mWheelViewName.setWheelSize(5); mWheelViewName.setBackgroundResource(R.color.colorBackground); 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"); mWheelViewTitle.setStyle(style); mWheelViewName.setStyle(style); initData(); //外部可点击 setOutsideTouchable(true); view.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { View popLayout = view.findViewById(R.id.pop_single_ll); 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 < top || y > bottom) { dismiss(); } if (x < left || x > right) { dismiss(); } } return true; } }); /* 设置窗口特征 */ //设置视图 this.setContentView(this.view); //设置窗口宽高 this.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT); this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT); //设置弹出窗口可点击 this.setFocusable(true); //实例化Color ColorDrawable colorDrawable = new ColorDrawable(0x7f000000); this.setBackgroundDrawable(colorDrawable); this.setAnimationStyle(R.style.PopupAnimation); } @Override public void onClick(View view) { if (view instanceof AppCompatTextView) { if (((AppCompatTextView) view).getText().equals("确认")) { for (OkButtonClickedListener okButtonClickedListener : okButtonClickedListeners) { if (mWheelViewTitle.getCurrentPosition() >= 0) { countryList = countryData.get(countryWordList.get(mWheelViewTitle.getCurrentPosition())); okButtonClickedListener.onItemSelected(0, null, countryList.get(mWheelViewName.getCurrentPosition())); } } dismiss(); } if (((AppCompatTextView) view).getText().equals("取消")) { dismiss(); } } } @Override public void onItemSelected(int position, Object o) { countryList = countryData.get(countryWordList.get(mWheelViewTitle.getCurrentPosition())); } private void initData() { mWheelViewTitle.setWheelData(countryWordList); mWheelViewTitle.join(mWheelViewName); mWheelViewTitle.joinDatas(countryData); mWheelViewName.setWheelData(countryList); } private List okButtonClickedListeners = new ArrayList(); public void addOkButtonClickedListener(OkButtonClickedListener okButtonClickedListener) { this.okButtonClickedListeners.add(okButtonClickedListener); } }