package com.bgy.autosale.payutil; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.IBinder; import android.text.TextUtils; import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import com.bgy.autosale.R; import com.hboxs.base_library.constant.Name; import com.hboxs.base_library.listener.DialogClickListener; import com.hboxs.base_library.util.DrawableSelectorUtils; import com.hboxs.base_library.util.SharedPreferencesUtils; import com.hboxs.base_library.util.ToastUtil; import com.hboxs.base_library.util.UiUtil; import com.hboxs.base_library.widget.BaseDialog; import com.orhanobut.hawk.Hawk; /** * @author whw * @time 2019/3/13 * @Description 一个输入框弹框 */ public class EtlDialog extends BaseDialog implements View.OnClickListener, RadioGroup.OnCheckedChangeListener { private String tips = UiUtil.getStringRes(R.string.glyid); private String machineType; public void setListener(DialogClickListener listener) { this.listener = listener; } private DialogClickListener listener; public EtlDialog(Context context, Activity activity) { super(context, activity); } @Override public void show() { super.show(); } private Button btnApply; private RadioGroup rgMachineType; private RadioButton rb320,rb330; private LinearLayout llCodeImage; private TextView tvServerid; private EditText etServerId; @Override protected void initView() { btnApply=findViewById(R.id.btn_apply); btnApply.setOnClickListener(this); rgMachineType=findViewById(R.id.rg_machine_type); rgMachineType.setOnCheckedChangeListener(this); // Drawable drawableSelector = DrawableSelectorUtils.createDrawableSelector(mActivity); // btnApply.setBackground(drawableSelector); rb320=findViewById(R.id.rb_320); rb330=findViewById(R.id.rb_330); String model = Hawk.get(Name.MACHINE_TYPE, Name.SI320); if ("MG320".equals(model)) { rb320.setChecked(true); }else{ rb330.setChecked(true); } // generateDeviceQRcode(model); int connectState = (int) SharedPreferencesUtils.getParam(Name.CONNECT_STATE, 999); llCodeImage=findViewById(R.id.ll_code_image); tvServerid=findViewById(R.id.tv_serverid); if (connectState==999) { llCodeImage.setVisibility(View.GONE); tvServerid.setVisibility(View.GONE); } etServerId=findViewById(R.id.et_server_id); } public void conceal(){ rgMachineType.setVisibility(View.VISIBLE); } @Override protected int getLayout() { return R.layout.dialog_et; } @Override protected int getAnimType() { return ANIM_CENTER_IN_OUT; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_apply: Hawk.put(Name.MACHINE_TYPE,machineType); String trim = etServerId.getText().toString().trim(); if (TextUtils.isEmpty(trim)) { ToastUtil.showToast(tips); return; } listener.onClickListener(R.id.btn_apply, trim); break; } dismiss(); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.rb_320: machineType = "SI320"; // generateDeviceQRcode("SI320"); break; } } /** * 生成设备二维码方法 */ // public void generateDeviceQRcode(String model){ // mCodeBitmap = ZXingUtils.createQRImage((FileUtil.getDeviceId1()+"+"+model+"+"+Heartbeat.clientId), 999, 999); // binding.codImage.setImageBitmap(mCodeBitmap); // } public Bitmap mCodeBitmap; @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); if (isShouldHideKeyboard(v, ev)) { hideKeyboard(v.getWindowToken()); } } return super.dispatchTouchEvent(ev); } /** * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏 * * @param v * @param event * @return */ private boolean isShouldHideKeyboard(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] l = {0, 0}; v.getLocationInWindow(l); int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 点击EditText的事件,忽略它。 return false; } else { return true; } } // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点 return false; } /** * 获取InputMethodManager,隐藏软键盘 * @param token */ private void hideKeyboard(IBinder token) { if (token != null) { InputMethodManager im = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); } } @Override public boolean onTouchEvent( MotionEvent event) { return super.onTouchEvent(event); } public void setRgMachineTypeVisi(int visiable){ rgMachineType.setVisibility(visiable); } public void setLlCodeImageVisi(int visiable){ llCodeImage.setVisibility(visiable); } public void setTvserveridText(String text){ tvServerid.setText(text); } public void setEtServerId(String text){ etServerId.setHint(text); } public void setTips(String tips) { this.tips = tips; } }