123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- package com.edufound.mobile.util;
- import android.app.Activity;
- import android.app.Dialog;
- import android.os.Handler;
- import android.os.Handler.Callback;
- import android.os.Message;
- import android.view.Display;
- import android.view.Gravity;
- import android.view.KeyEvent;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.Button;
- import android.widget.EditText;
- import com.edufound.mobile.R;
- import com.edufound.mobile.main.MainView;
- public final class ShowDebugUrl implements Callback {
- private static final int MSG_SHOW_EFKEY = Integer.MIN_VALUE;
- private Handler mHandlerUi = new Handler(this);
- private Handler mHandlerBackground = new Handler(this);
- private static final int[] EFKEY = {KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_DOWN,
- KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_LEFT,
- KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_DOWN,
- KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_DPAD_RIGHT};
- private static final int EFKEY_LENGTH = EFKEY.length;
- private static final long INPUT_INTERVAL = 10 * 1000L;
- private long mLastInputTime;
- private int mIndex;
- private static Activity mContext;
- Dialog dialog;
- static MainView mView;
- private void input(int keyCode) {
- if (System.currentTimeMillis() - mLastInputTime > INPUT_INTERVAL) {
- mIndex = 0;
- }
- if (mIndex >= EFKEY_LENGTH || mIndex < 0) {
- mIndex = 0;
- }
- if (EFKEY[mIndex] == keyCode) {
- mLastInputTime = System.currentTimeMillis();
- mIndex++;
- if (mIndex == EFKEY_LENGTH) {
- mHandlerUi.sendEmptyMessage(MSG_SHOW_EFKEY);
- }
- } else {
- mLastInputTime = System.currentTimeMillis();
- mIndex = 0;
- }
- }
- public void show(MainView mview) {
- mView = mview;
- mContext = mView.getActivity();
- Logger.e("ShowDebugUrl Dialog");
- if (dialog == null) {
- dialog = new Dialog(mContext);
- dialog.setContentView(createView());
- Window dialogWindow = dialog.getWindow();
- dialogWindow.setGravity(Gravity.CENTER);
- WindowManager m = mContext.getWindowManager();
- Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
- WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值
- p.height = (int) (d.getHeight() * 0.6);
- p.width = (int) (d.getWidth() * 0.8);
- dialogWindow.setAttributes(p);
- dialog.setTitle("设置");
- }
- dialog.show();
- }
- private View createView() {
- View debugUrl = LayoutInflater.from(mContext).inflate(R.layout.window_debugurl, null);
- final EditText editText = debugUrl.findViewById(R.id.window_debugurl_edit);
- Button btn = debugUrl.findViewById(R.id.window_debugurl_btn);
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (editText.getText() == null || editText.getText().equals("")) {
- return;
- }
- ToastUtil.showToast(editText.getText().toString());
- mView.loadUrl(editText.getText().toString());
- }
- });
- return debugUrl;
- }
- private static final ShowDebugUrl INSTANCE = new ShowDebugUrl();
- public static void dispatchKeyEvent(KeyEvent e, MainView mainview) {
- try {
- mContext = mView.getActivity();
- getInstance().dispathInput(e);
- } catch (final Exception ex) {
- ex.printStackTrace();
- }
- }
- public static ShowDebugUrl getInstance() {
- return INSTANCE;
- }
- private void dispathInput(final KeyEvent e) {
- mHandlerBackground.sendEmptyMessage(e.getKeyCode());
- }
- @Override
- public boolean handleMessage(Message msg) {
- try {
- switch (msg.what) {
- case MSG_SHOW_EFKEY:
- // show();
- break;
- default:
- input(msg.what);
- break;
- }
- } catch (final Exception ex) {
- ex.printStackTrace();
- }
- return true;
- }
- }
|