A little custom controls

This commit is contained in:
khanhduytran0 2020-04-11 09:48:17 +07:00
parent b96b9489df
commit 5666b2973a
8 changed files with 160 additions and 17 deletions

View File

@ -33,6 +33,11 @@
android:name=".MCLauncherActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity
android:screenOrientation="sensorLandscape"
android:name=".CustomControlsActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity
android:launchMode="standard"
android:multiprocess="true"

View File

@ -0,0 +1,15 @@
package net.kdt.pojavlaunch;
import android.support.v7.app.*;
import android.os.*;
public class CustomControlsActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}

View File

@ -7,10 +7,10 @@ import android.graphics.drawable.*;
import android.os.*;
import android.support.design.widget.*;
import android.support.v4.widget.*;
import android.support.v7.app.*;
import android.system.*;
import android.util.*;
import android.view.*;
import android.view.GestureDetector.*;
import android.view.View.*;
import android.view.inputmethod.*;
import android.widget.*;
@ -26,18 +26,18 @@ import javax.crypto.*;
import javax.microedition.khronos.egl.*;
import javax.microedition.khronos.opengles.*;
import net.kdt.pojavlaunch.exit.*;
import net.kdt.pojavlaunch.prefs.*;
import optifine.*;
import org.apache.harmony.security.fortress.*;
import org.lwjgl.input.*;
import org.lwjgl.opengl.*;
import org.lwjgl.util.applet.*;
import org.lwjgl.util.glu.tessellation.*;
import android.app.AlertDialog;
import android.graphics.drawable.Drawable;
import java.security.Provider.*;
import org.apache.harmony.security.fortress.*;
import optifine.*;
import net.kdt.pojavlaunch.prefs.*;
public class MainActivity extends Activity implements OnTouchListener, OnClickListener
public class MainActivity extends AppCompatActivity implements OnTouchListener, OnClickListener
{
public static final String initText = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ";
@ -498,7 +498,7 @@ public class MainActivity extends Activity implements OnTouchListener, OnClickLi
pointerCaptureListener = new OnTouchListener(){
private int x, y;
private String getMoving(int pos, boolean xOrY) {
private String getMoving(float pos, boolean xOrY) {
if (pos == 0) {
return "STOPPED";
} else if (pos > 0) {
@ -526,8 +526,8 @@ public class MainActivity extends Activity implements OnTouchListener, OnClickLi
builder.append("XPos=" + x + "\n");
builder.append("YPos=" + y + "\n\n");
builder.append("MovingX=" + getMoving(x, true) + "\n");
builder.append("MovingY=" + getMoving(y, false) + "\n");
builder.append("MovingX=" + getMoving(e.getX(), true) + "\n");
builder.append("MovingY=" + getMoving(e.getY(), false) + "\n");
debugText.setText(builder.toString());
}
@ -1245,12 +1245,4 @@ public class MainActivity extends Activity implements OnTouchListener, OnClickLi
}
return hotbarKeys[((x - barx) / mcscale(20)) % 9];
}
private class SingleTapConfirm extends SimpleOnGestureListener
{
@Override
public boolean onSingleTapUp(MotionEvent event) {
return true;
}
}
}

View File

@ -0,0 +1,12 @@
package net.kdt.pojavlaunch;
import android.view.*;
import android.view.GestureDetector.*;
public class SingleTapConfirm extends SimpleOnGestureListener
{
@Override
public boolean onSingleTapUp(MotionEvent event) {
return true;
}
}

View File

@ -0,0 +1,19 @@
package net.kdt.pojavlaunch.value.customcontrols;
import net.kdt.pojavlaunch.*;
public class ControlButton
{
// Concept...
public String name;
public float x;
public float y;
public int lwjglKeycode;
public boolean holdCtrl;
public boolean holdAlt;
public boolean holdShift;
// public boolean hold
public void execute(MainActivity act, boolean isDown) {
act.sendKeyPress(lwjglKeycode, isDown);
}
}

View File

@ -0,0 +1,73 @@
package net.kdt.pojavlaunch.value.customcontrols;
import android.content.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import net.kdt.pojavlaunch.*;
public class ControlView extends Button implements OnTouchListener
{
private GestureDetector mGestureDetector;
private View.OnClickListener mClickListener;
private ControlButton mProperties;
public ControlView(Context ctx, ControlButton properties) {
super(ctx);
setOnTouchListener(this);
mGestureDetector = new GestureDetector(ctx, new SingleTapConfirm());
mProperties = properties;
setText(properties.name);
setTranslationX(moveX = properties.x);
setTranslationY(moveY = properties.y);
}
@Override
public void setTranslationX(float x)
{
super.setTranslationX(x);
mProperties.x = x;
}
@Override
public void setTranslationY(float y) {
super.setTranslationY(y);
mProperties.y = y;
}
private float moveX, moveY;
private float downX, downY;
@Override
public boolean onTouch(View view, MotionEvent event) {
if (mGestureDetector.onTouchEvent(event)) {
mClickListener.onClick(view);
return true;
}
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
downX = event.getX();
downY = event.getY();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_MOVE:
moveX += event.getX() - downX;
moveY += event.getY() - downY;
setTranslationX(moveX);
setTranslationY(moveY);
break;
}
return false;
}
@Override
public void setOnClickListener(View.OnClickListener l) {
// super.setOnClickListener(p1);
mClickListener = l;
}
}

View File

@ -0,0 +1,21 @@
package net.kdt.pojavlaunch.value.customcontrols;
import android.widget.*;
import android.content.*;
import android.util.*;
public class ControlsLayout extends FrameLayout
{
public ControlsLayout(Context ctx) {
super(ctx);
}
public ControlsLayout(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
}
public void loadLayout(CustomControls controlLayout) {
for (ControlButton button : controlLayout.button) {
addView(new ControlView(getContext(), button));
}
}
}

View File

@ -0,0 +1,6 @@
package net.kdt.pojavlaunch.value.customcontrols;
public class CustomControls
{
public ControlButton[] button = new ControlButton[]{};
}