/**
* 用于分割指定继承时图斑选择
*
* @author zuo
* @date 2018/9/5 10:56
*/
public class SplitDataChooseDialog {
private Context mContext;
private View mView;
private ISplitDataChooseListener mDataChooseListener;
private String mOrgTBBH;
private String mSplitTBBH;
private List<String> mChooseTBs = new ArrayList<>();
public interface ISplitDataChooseListener {
/**
* 选择的图斑
*
* @param chooseTBs
*/
void onResult(List<String> chooseTBs);
/**
* 原始图斑是否选中
*
* @param isChecked
*/
void onCheckOrgTB(boolean isChecked);
/**
* 分割后的图斑是否选中
*
* @param isChecked
*/
void onCheckSplitTB(boolean isChecked);
}
/**
* @param orgTBBH - 原始图斑编号
* @param splitTBBH - 分割后的图斑编号
* @param listener - 完成选择继承图斑的监听事件
*/
public SplitDataChooseDialog(IGeometryEngine hook, @NonNull String orgTBBH, @NonNull String splitTBBH,
ISplitDataChooseListener listener) {
this.mContext = hook.getContext();
this.mView = hook.getMapView().getRootView();
this.mOrgTBBH = orgTBBH;
this.mSplitTBBH = splitTBBH;
this.mDataChooseListener = listener;
}
public void show() {
final View view = LayoutInflater.from(mContext).inflate(R.layout.choose_split_data, null);
final CheckBox cbDataOrg = view.findViewById(R.id.cb_data_org);
cbDataOrg.setText(mOrgTBBH);
final CheckBox cbDataSplit = view.findViewById(R.id.cb_data_split);
cbDataSplit.setText(mSplitTBBH);
final WindowManager mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mWindowManager.addView(view, createWindowLayoutParams());
cbDataOrg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mDataChooseListener.onCheckOrgTB(cbDataOrg.isChecked());
}
});
cbDataSplit.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mDataChooseListener.onCheckSplitTB(cbDataSplit.isChecked());
}
});
view.findViewById(R.id.btn_sure).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cbDataOrg.isChecked()) {
mChooseTBs.add(mOrgTBBH);
}
if (cbDataSplit.isChecked()) {
mChooseTBs.add(mSplitTBBH);
}
if (mChooseTBs.size() <= 0) {
Toast.makeText(mContext, "请最少选择一个图斑!", Toast.LENGTH_SHORT).show();
} else {
mDataChooseListener.onResult(mChooseTBs);
mWindowManager.removeView(view);
}
}
});
}
private WindowManager.LayoutParams createWindowLayoutParams() {
WindowManager.LayoutParams p = new WindowManager.LayoutParams();
p.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
p.width = WindowManager.LayoutParams.WRAP_CONTENT;
p.height = WindowManager.LayoutParams.WRAP_CONTENT;
p.format = PixelFormat.TRANSLUCENT;
//作为系统窗口 需要权限
p.type = WindowManager.LayoutParams.TYPE_APPLICATION;
//控制布局区域外是否可以点击
p.flags = WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
p.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED;
//p.token = token;
return p;
}
}
利用WindowManager 创建最上层的view,可控制是否可以点击外部
最新推荐文章于 2025-03-11 11:42:02 发布