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 CountrySelectionPopup extends PopupWindow implements View.OnClickListener, WheelView.OnWheelItemSelectedListener {
|
private Context mContext;
|
private View view;
|
private TextView mTvConfirm, mTvCancel;
|
private WheelView mWheelViewTitle, mWheelViewName;
|
private HashMap<String, List<String>> countryData;
|
private List<String> countryWordList;
|
private List<String> countryList;
|
private CountryPresenter countryPresenter;
|
|
public CountrySelectionPopup(Context context, String[] countryWordData, List<String> countryWordList, HashMap<String, List<String>> 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<OkButtonClickedListener> okButtonClickedListeners = new ArrayList<OkButtonClickedListener>();
|
|
public void addOkButtonClickedListener(OkButtonClickedListener okButtonClickedListener) {
|
this.okButtonClickedListeners.add(okButtonClickedListener);
|
}
|
|
}
|