|
@@ -1,20 +1,26 @@
|
|
|
package com.xugame.gameconsole.dialog.gamemenu;
|
|
|
|
|
|
import android.content.Context;
|
|
|
+import android.view.KeyEvent;
|
|
|
import android.view.View;
|
|
|
import android.view.Window;
|
|
|
import android.view.WindowManager;
|
|
|
+import android.widget.Button;
|
|
|
+import android.widget.LinearLayout;
|
|
|
import android.widget.RadioGroup;
|
|
|
import android.widget.TextView;
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+
|
|
|
import com.xugame.gameconsole.R;
|
|
|
import com.xugame.gameconsole.dialog.BaseDialog;
|
|
|
import com.xugame.gameconsole.emulator.ScreenType;
|
|
|
import com.xugame.gameconsole.util.DebugUtil;
|
|
|
|
|
|
public class GameMenuDialog extends BaseDialog
|
|
|
- implements RadioGroup.OnCheckedChangeListener {
|
|
|
+ implements RadioGroup.OnCheckedChangeListener,
|
|
|
+ View.OnClickListener {
|
|
|
private static final String TAG = "GameMenuDialogTAG";
|
|
|
private RadioGroup mRadioGroup;
|
|
|
GameMenuDialogListener mListener;
|
|
@@ -22,16 +28,36 @@ public class GameMenuDialog extends BaseDialog
|
|
|
private TextView[] archiveTexts;
|
|
|
private TextView[] readArchiveTexts;
|
|
|
private Context mContext;
|
|
|
- private int mReadArchiveIndex=0;//读取存档下标
|
|
|
+ private int mReadArchiveIndex = 0;//读取存档下标
|
|
|
+ private LinearLayout mKeySettingBg;
|
|
|
+ //UP/DOWN/LEFT/RIGHT/A/B/X/Y/L1/R1/L2/R2
|
|
|
+ private int[] KEYS = {
|
|
|
+ KeyEvent.KEYCODE_W,
|
|
|
+ KeyEvent.KEYCODE_S,
|
|
|
+ KeyEvent.KEYCODE_A,
|
|
|
+ KeyEvent.KEYCODE_D,
|
|
|
+ KeyEvent.KEYCODE_J,
|
|
|
+ KeyEvent.KEYCODE_K,
|
|
|
+ KeyEvent.KEYCODE_L,
|
|
|
+ KeyEvent.KEYCODE_U,
|
|
|
+ KeyEvent.KEYCODE_I,
|
|
|
+ KeyEvent.KEYCODE_O,
|
|
|
+ KeyEvent.KEYCODE_3,
|
|
|
+ KeyEvent.KEYCODE_1};
|
|
|
+ private Button mKeySwitch;
|
|
|
+ private boolean isKeySettingRunning = false;
|
|
|
+ private int keySettingIndex=0;
|
|
|
+ private TextView[] mKeyNumText;
|
|
|
+ private TextView mKeyName;
|
|
|
|
|
|
public GameMenuDialog(Context context, GameMenuDialogListener listener) {
|
|
|
super(context, R.style.DialogNoPadding);
|
|
|
this.mListener = listener;
|
|
|
- this.mContext=context;
|
|
|
+ this.mContext = context;
|
|
|
setContentView(R.layout.dialog_gamemenu_layout);
|
|
|
Window window = this.getWindow();
|
|
|
WindowManager.LayoutParams wLp = window.getAttributes();
|
|
|
- wLp.width = 800;
|
|
|
+ wLp.width = 1000;
|
|
|
wLp.height = 632;
|
|
|
wLp.dimAmount = 0.6f;//透明度
|
|
|
window.setAttributes(wLp);
|
|
@@ -41,22 +67,39 @@ public class GameMenuDialog extends BaseDialog
|
|
|
private void initView() {
|
|
|
mRadioGroup = findViewById(R.id.radio_gp_screen);
|
|
|
mRadioGroup.setOnCheckedChangeListener(this);
|
|
|
- archiveTexts=new TextView[5];
|
|
|
- readArchiveTexts=new TextView[5];
|
|
|
- archiveTexts[0]=findViewById(R.id.archive_1);
|
|
|
- archiveTexts[1]=findViewById(R.id.archive_2);
|
|
|
- archiveTexts[2]=findViewById(R.id.archive_3);
|
|
|
- archiveTexts[3]=findViewById(R.id.archive_4);
|
|
|
- archiveTexts[4]=findViewById(R.id.archive_5);
|
|
|
-
|
|
|
- readArchiveTexts[0]=findViewById(R.id.read_archive_1);
|
|
|
- readArchiveTexts[1]=findViewById(R.id.read_archive_2);
|
|
|
- readArchiveTexts[2]=findViewById(R.id.read_archive_3);
|
|
|
- readArchiveTexts[3]=findViewById(R.id.read_archive_4);
|
|
|
- readArchiveTexts[4]=findViewById(R.id.read_archive_5);
|
|
|
-
|
|
|
- for (int i=0;i<archiveTexts.length;i++){
|
|
|
- final int tempIndex=i;
|
|
|
+ archiveTexts = new TextView[5];
|
|
|
+ readArchiveTexts = new TextView[5];
|
|
|
+ archiveTexts[0] = findViewById(R.id.archive_1);
|
|
|
+ archiveTexts[1] = findViewById(R.id.archive_2);
|
|
|
+ archiveTexts[2] = findViewById(R.id.archive_3);
|
|
|
+ archiveTexts[3] = findViewById(R.id.archive_4);
|
|
|
+ archiveTexts[4] = findViewById(R.id.archive_5);
|
|
|
+
|
|
|
+ readArchiveTexts[0] = findViewById(R.id.read_archive_1);
|
|
|
+ readArchiveTexts[1] = findViewById(R.id.read_archive_2);
|
|
|
+ readArchiveTexts[2] = findViewById(R.id.read_archive_3);
|
|
|
+ readArchiveTexts[3] = findViewById(R.id.read_archive_4);
|
|
|
+ readArchiveTexts[4] = findViewById(R.id.read_archive_5);
|
|
|
+ mKeySettingBg = findViewById(R.id.key_setting_bg);
|
|
|
+ mKeySwitch = findViewById(R.id.key_setting_switch);
|
|
|
+ mKeyName=findViewById(R.id.keyName);
|
|
|
+
|
|
|
+ mKeySwitch.setOnClickListener(this);
|
|
|
+ mKeyNumText=new TextView[KEYS.length];
|
|
|
+ for (int i = 0; i < KEYS.length; i++) {
|
|
|
+ TextView textView = new TextView(mContext);
|
|
|
+ textView.setText("key-" + KEYS[i]);
|
|
|
+
|
|
|
+ LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
|
|
|
+ LinearLayout.LayoutParams.WRAP_CONTENT);
|
|
|
+ llp.leftMargin = 10;
|
|
|
+ mKeySettingBg.addView(textView, llp);
|
|
|
+ mKeyNumText[i]=textView;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0; i < archiveTexts.length; i++) {
|
|
|
+ final int tempIndex = i;
|
|
|
archiveTexts[i].setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View view) {
|
|
@@ -68,8 +111,8 @@ public class GameMenuDialog extends BaseDialog
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- for (int i=0;i<readArchiveTexts.length;i++){
|
|
|
- final int tempIndex=i;
|
|
|
+ for (int i = 0; i < readArchiveTexts.length; i++) {
|
|
|
+ final int tempIndex = i;
|
|
|
readArchiveTexts[i].setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View view) {
|
|
@@ -111,4 +154,47 @@ public class GameMenuDialog extends BaseDialog
|
|
|
mType = ScreenType.SCANLINE;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean dispatchKeyEvent(@NonNull KeyEvent event) {
|
|
|
+ if (isKeySettingRunning) {
|
|
|
+ if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
|
|
+ int devicesID = event.getDeviceId();
|
|
|
+ String devicesName = event.getDevice().getName();
|
|
|
+ int keyCode = event.getKeyCode();
|
|
|
+ DebugUtil.i(TAG,""+keyCode);
|
|
|
+ mKeyName.setText("按键ID:"+devicesID+"设备名:"+devicesName);
|
|
|
+
|
|
|
+ if(keySettingIndex<KEYS.length&&mKeyNumText!=null){
|
|
|
+ mKeyNumText[keySettingIndex].setText("key-"+keyCode);
|
|
|
+ keySettingIndex++;
|
|
|
+ }else {
|
|
|
+ Toast.makeText(mContext,"设置完毕",Toast.LENGTH_SHORT).show();
|
|
|
+ String tempKeyStr="";
|
|
|
+ for (int num:KEYS){
|
|
|
+ tempKeyStr+=num+"-";
|
|
|
+ }
|
|
|
+ DebugUtil.i(TAG,"key="+tempKeyStr);
|
|
|
+ keySettingIndex=0;
|
|
|
+ mKeySwitch.performClick();
|
|
|
+ if(mListener!=null){
|
|
|
+ mListener.onKeySettingNums(KEYS);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return super.dispatchKeyEvent(event);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onClick(View view) {
|
|
|
+ if (view == mKeySwitch) {
|
|
|
+ isKeySettingRunning = !isKeySettingRunning;
|
|
|
+ mKeySwitch.setText((isKeySettingRunning != true ? "开始设置按键" : "停止设置按键"));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|