diff --git a/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java b/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java index 57b7bc588..2dda22f2a 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java @@ -2,6 +2,7 @@ package net.kdt.pojavlaunch; import android.support.v7.app.*; import android.os.*; +import net.kdt.pojavlaunch.value.customcontrols.*; public class CustomControlsActivity extends AppCompatActivity { @@ -9,7 +10,18 @@ public class CustomControlsActivity extends AppCompatActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + CustomControls ctrl = new CustomControls(); + + ControlButton ctrlEx = new ControlButton(); + ctrlEx.name = "Test"; + ctrlEx.x = 100; + ctrlEx.y = 100; + + ctrl.button = new ControlButton[]{ctrlEx}; + + ControlsLayout ctrlLayout = new ControlsLayout(this); + ctrlLayout.loadLayout(ctrl); + ctrlLayout.setCanMove(true); + setContentView(ctrlLayout); } - - } diff --git a/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java index 3b34dea00..23faef940 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java @@ -246,8 +246,8 @@ public class MCLauncherActivity extends AppCompatActivity private float updateWidthHeight() { float leftRightWidth = (float) AndroidDisplay.windowWidth / 100f * 32f; float playButtonWidth = AndroidDisplay.windowWidth - leftRightWidth * 2f; - LinearLayout.LayoutParams leftRightParams = new LinearLayout.LayoutParams((int) leftRightWidth, dpToPixel(AndroidDisplay.windowHeight / 9)); - LinearLayout.LayoutParams playButtonParams = new LinearLayout.LayoutParams((int) playButtonWidth, dpToPixel(AndroidDisplay.windowHeight / 9)); + LinearLayout.LayoutParams leftRightParams = new LinearLayout.LayoutParams((int) leftRightWidth, (int) Tools.dpToPx(this, AndroidDisplay.windowHeight / 9)); + LinearLayout.LayoutParams playButtonParams = new LinearLayout.LayoutParams((int) playButtonWidth, (int) Tools.dpToPx(this, AndroidDisplay.windowHeight / 9)); leftView.setLayoutParams(leftRightParams); rightView.setLayoutParams(leftRightParams); playButton.setLayoutParams(playButtonParams); @@ -400,12 +400,6 @@ public class MCLauncherActivity extends AppCompatActivity super.onResume(); } - private int dpToPixel(int sizeInDP) - { - return (int) TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, sizeInDP, getResources() - .getDisplayMetrics()); - } private boolean canBack = false; private void statusIsLaunching(boolean isLaunching) { @@ -848,10 +842,13 @@ public class MCLauncherActivity extends AppCompatActivity case 2:{ // Check update checkUpdate(); } break; - case 3:{ // Settings + case 3:{ // Custom controls + startActivity(new Intent(MCLauncherActivity.this, CustomControlsActivity.class)); + } break; + case 4:{ // Settings startActivity(new Intent(MCLauncherActivity.this, PojavPreferenceActivity.class)); } break; - case 4:{ // About + case 5:{ // About final AlertDialog.Builder aboutB = new AlertDialog.Builder(MCLauncherActivity.this); aboutB.setTitle(R.string.mcl_option_about); try diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java index 4f89bbd84..d6201b886 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -1156,18 +1156,10 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, .show(); } - private float pxToDp(float px) { - return (px / getResources().getDisplayMetrics().density); - } - - private float dpToPx(float dp) { - return (dp * getResources().getDisplayMetrics().density); - } - private Button findButton(int id) { Button button = (Button) findViewById(id); - button.setWidth((int) dpToPx(pxToDp(button.getWidth()) * PojavPreferenceActivity.PREF_BUTTONSIZE)); - button.setHeight((int) dpToPx(pxToDp(button.getHeight()) * PojavPreferenceActivity.PREF_BUTTONSIZE)); + button.setWidth((int) Tools.dpToPx(this, Tools.pxToDp(this, button.getWidth()) * PojavPreferenceActivity.PREF_BUTTONSIZE)); + button.setHeight((int) Tools.dpToPx(this, Tools.pxToDp(this, button.getHeight()) * PojavPreferenceActivity.PREF_BUTTONSIZE)); button.setOnTouchListener(this); return button; } diff --git a/app/src/main/java/net/kdt/pojavlaunch/Tools.java b/app/src/main/java/net/kdt/pojavlaunch/Tools.java index 8c6983cdf..08af2f4be 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -104,6 +104,13 @@ public final class Tools return displayMetrics; } + public static float pxToDp(Context ctx, float px) { + return (px / ctx.getResources().getDisplayMetrics().density); + } + + public static float dpToPx(Context ctx, float dp) { + return (dp * ctx.getResources().getDisplayMetrics().density); + } public static void copyAssetFile(Context ctx, String fileName, String output, boolean overwrite) throws Exception { diff --git a/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlView.java b/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlView.java index 1e4f13d1b..2f907d48e 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlView.java +++ b/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlView.java @@ -16,7 +16,9 @@ public class ControlView extends Button implements OnTouchListener public ControlView(Context ctx, ControlButton properties) { super(ctx); + setBackgroundResource(R.drawable.control_button); setOnTouchListener(this); + mGestureDetector = new GestureDetector(ctx, new SingleTapConfirm()); mProperties = properties; @@ -43,7 +45,7 @@ public class ControlView extends Button implements OnTouchListener @Override public boolean onTouch(View view, MotionEvent event) { if (mGestureDetector.onTouchEvent(event)) { - mClickListener.onClick(view); + if (mClickListener != null) mClickListener.onClick(view); return true; } else if (!mCanMove) { return false; diff --git a/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlsLayout.java b/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlsLayout.java index 176f1619d..128b29aa9 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlsLayout.java +++ b/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlsLayout.java @@ -3,9 +3,13 @@ import android.widget.*; import android.content.*; import android.util.*; import android.view.*; +import com.google.gson.*; +import net.kdt.pojavlaunch.*; public class ControlsLayout extends FrameLayout { + private boolean mCanMove; + private CustomControls mLayout; public ControlsLayout(Context ctx) { super(ctx); } @@ -15,12 +19,20 @@ public class ControlsLayout extends FrameLayout } public void loadLayout(CustomControls controlLayout) { + mLayout = controlLayout; for (ControlButton button : controlLayout.button) { - addView(new ControlView(getContext(), button)); + ControlView view = new ControlView(getContext(), button); + view.setCanMove(mCanMove); + addView(view); } } + public void saveLayout(String path) throws Exception { + Tools.write(path, new Gson().toJson(mLayout)); + } + public void setCanMove(boolean z) { + mCanMove = z; for (int i = 0; i < getChildCount(); i++) { View v = getChildAt(i); if (v instanceof ControlView) { diff --git a/app/src/main/res/values/headings_array.xml b/app/src/main/res/values/headings_array.xml index bcacebcdc..292085587 100644 --- a/app/src/main/res/values/headings_array.xml +++ b/app/src/main/res/values/headings_array.xml @@ -4,6 +4,7 @@ @string/mcl_option_modmgr @string/mcl_option_optifineinstall @string/mcl_option_checkupdate + @string/mcl_option_customcontrol @string/mcl_option_settings @string/mcl_option_about diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 40c6c0719..0d04ef259 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -82,6 +82,7 @@ Mod manager (no function) Install OptiFine Check for update + Custom controls Settings About