fix digital button revoke event, update colors

This commit is contained in:
Karim Mreisi 2015-01-24 11:46:31 +01:00
parent 4e29f2ae8b
commit 1c9458d056
5 changed files with 97 additions and 181 deletions

View File

@ -8,12 +8,10 @@
</facet>
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="nonRootDebug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleNonRootDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileNonRootDebugSources" />
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleNonRootDebugTest" />
<option name="SOURCE_GEN_TASK_NAME" value="generateNonRootDebugSources" />
<option name="TEST_SOURCE_GEN_TASK_NAME" value="generateNonRootDebugTestSources" />
<option name="SELECTED_BUILD_VARIANT" value="nonRootRelease" />
<option name="ASSEMBLE_TASK_NAME" value="assembleNonRootRelease" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileNonRootReleaseSources" />
<option name="SOURCE_GEN_TASK_NAME" value="generateNonRootReleaseSources" />
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
@ -23,28 +21,22 @@
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build/intermediates/classes/nonRoot/debug" />
<output url="file://$MODULE_DIR$/build/intermediates/classes/nonRoot/release" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/nonRoot/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/nonRoot/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/nonRoot/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/nonRoot/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/nonRoot/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/nonRoot/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootDebug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootDebug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootDebug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootDebug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootDebug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootDebug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootDebug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/test/nonRoot/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/test/nonRoot/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/test/nonRoot/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/test/nonRoot/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/nonRoot/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/test/nonRoot/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/nonRoot/release" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/nonRoot/release" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/nonRoot/release" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/nonRoot/release" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/nonRoot/release" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/nonRoot/release" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootRelease/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootRelease/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootRelease/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootRelease/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootRelease/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootRelease/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRootRelease/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRoot/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRoot/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/nonRoot/assets" type="java-resource" />
@ -59,13 +51,13 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTestNonRoot/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestNonRoot/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestNonRoot/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/release/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/release/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/release/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/release/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/release/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/release/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/release/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />

View File

@ -21,7 +21,7 @@ public class AnalogStick extends View
MOVED
}
private static final boolean _PRINT_DEBUG_INFORMATION = true;
private static final boolean _PRINT_DEBUG_INFORMATION = false;
public interface AnalogStickListener
{
@ -46,8 +46,8 @@ public class AnalogStick extends View
}
}
private int normalColor = 0x88888888;
private int pressedColor = 0x880000FF;
private int normalColor = 0xF0888888;
private int pressedColor = 0xF00000FF;
float radius_complete = 0;
float radius_dead_zone = 0;
@ -74,6 +74,12 @@ public class AnalogStick extends View
}
public void setColors(int normalColor, int pressedColor)
{
this.normalColor = normalColor;
this.pressedColor = pressedColor;
}
private float getPercent(float value, int percent)
{
return value / 100 * percent;

View File

@ -15,10 +15,10 @@ import java.util.List;
*/
public class DigitalButton extends View
{
private static final boolean _PRINT_DEBUG_INFORMATION = true;
private static final boolean _PRINT_DEBUG_INFORMATION = false;
private int normalColor = 0x88888888;
private int pressedColor = 0x880000FF;
private int normalColor = 0xF0888888;
private int pressedColor = 0xF00000FF;
private String text;
@ -34,6 +34,12 @@ public class DigitalButton extends View
listeners.add(listener);
}
public void setColors(int normalColor, int pressedColor)
{
this.normalColor = normalColor;
this.pressedColor = pressedColor;
}
public void setOnTouchListener(OnTouchListener listener)
{
onTouchListener = listener;

View File

@ -21,10 +21,10 @@ public class DigitalPad extends View
public final static int DIGITAL_PAD_DIRECTION_RIGHT = 4;
public final static int DIGITAL_PAD_DIRECTION_DOWN = 8;
private int normalColor = 0x88888888;
private int pressedColor = 0x880000FF;
private int normalColor = 0xF0888888;
private int pressedColor = 0xF00000FF;
private static final boolean _PRINT_DEBUG_INFORMATION = true;
private static final boolean _PRINT_DEBUG_INFORMATION = false;
public interface DigitalPadListener
{
@ -71,6 +71,12 @@ public class DigitalPad extends View
return getWidth() > getHeight() ? getHeight() : getWidth();
}
public void setColors(int normalColor, int pressedColor)
{
this.normalColor = normalColor;
this.pressedColor = pressedColor;
}
@Override
protected void onDraw(Canvas canvas)
{
@ -83,14 +89,17 @@ public class DigitalPad extends View
paint.setTextAlign(Paint.Align.CENTER);
paint.setStrokeWidth(3);
// draw no direction rect
paint.setStyle(Paint.Style.STROKE);
paint.setColor(direction == DIGITAL_PAD_DIRECTION_NO_DIRECTION ? pressedColor : normalColor);
canvas.drawRect(
getPercent(getWidth(), 36), getPercent(getHeight(), 36),
getPercent(getWidth(), 63), getPercent(getHeight(), 63),
paint
);
if (direction == DIGITAL_PAD_DIRECTION_NO_DIRECTION)
{
// draw no direction rect
paint.setStyle(Paint.Style.STROKE);
paint.setColor(normalColor);
canvas.drawRect(
getPercent(getWidth(), 36), getPercent(getHeight(), 36),
getPercent(getWidth(), 63), getPercent(getHeight(), 63),
paint
);
}
// draw left rect
paint.setColor((direction & DIGITAL_PAD_DIRECTION_LEFT) > 0 ? pressedColor : normalColor);

View File

@ -25,6 +25,7 @@ public class VirtualController
System.out.println("VirtualController: " + text);
}
}
private short inputMap = 0x0000;
private byte leftTrigger = 0x00;
private byte rightTrigger = 0x00;
@ -50,7 +51,11 @@ public class VirtualController
private RelativeLayout.LayoutParams layoutParamsParamsStick = null;
private RelativeLayout.LayoutParams layoutParamsParamsStick2 = null;
private Button buttonStart = null;
// configuration
private RelativeLayout.LayoutParams layoutParamsButtonOpenColorPickerNormal = null;
private RelativeLayout.LayoutParams layoutParamsButtonOpenColorPickerPressed = null;
private Button buttonStart = null;
private Button buttonSelect = null;
private Button buttonESC = null;
@ -65,7 +70,6 @@ public class VirtualController
private DigitalButton buttonLB = null;
private DigitalButton buttonRB = null;
private AnalogStick stick = null;
private AnalogStick stick2 = null;
@ -93,35 +97,6 @@ public class VirtualController
);
}
private void onButtonTouchEvent(View v, MotionEvent event, short key)
{
// get masked (not specific to a pointer) action
int action = event.getActionMasked();
switch (action)
{
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
{
inputMap |= key;
sendControllerInputPacket();
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
{
inputMap &= ~key;
sendControllerInputPacket();
break;
}
}
}
void refreshLayout()
{
relative_layout.removeAllViews();
@ -172,6 +147,27 @@ public class VirtualController
relative_layout.addView(buttonRB, layoutParamsButtonRB);
}
private DigitalButton createDigitalButton(String text, final int key, Context context)
{
DigitalButton button = new DigitalButton(context);
button.setText(text);
button.addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
@Override
public void onClick() {
inputMap |= key;
sendControllerInputPacket();
}
@Override
public void onRelease() {
inputMap &= ~key;
sendControllerInputPacket();
}
});
return button;
}
public VirtualController(final NvConnection conn, FrameLayout layout, Context context, WindowManager window_manager)
{
this.connection = conn;
@ -234,72 +230,10 @@ public class VirtualController
}
});
buttonX = new DigitalButton(context);
buttonX.setText("X");
buttonX.addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
@Override
public void onClick() {
inputMap |= ControllerPacket.X_FLAG;
sendControllerInputPacket();
}
@Override
public void onRelease() {
inputMap &= ControllerPacket.X_FLAG;
sendControllerInputPacket();
}
});
buttonY = new DigitalButton(context);
buttonY.setText("Y");
buttonY.addDigitalButtonListener(new DigitalButton.DigitalButtonListener()
{
@Override
public void onClick()
{
inputMap |= ControllerPacket.Y_FLAG;
sendControllerInputPacket();
}
@Override
public void onRelease()
{
inputMap &= ControllerPacket.Y_FLAG;
sendControllerInputPacket();
}
});
buttonA = new DigitalButton(context);
buttonA.setText("A");
buttonA.addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
@Override
public void onClick() {
inputMap |= ControllerPacket.A_FLAG;
sendControllerInputPacket();
}
@Override
public void onRelease() {
inputMap &= ControllerPacket.A_FLAG;
sendControllerInputPacket();
}
});
buttonB = new DigitalButton(context);
buttonB.setText("B");
buttonB.addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
@Override
public void onClick() {
inputMap |= ControllerPacket.B_FLAG;
sendControllerInputPacket();
}
@Override
public void onRelease() {
inputMap &= ControllerPacket.B_FLAG;
sendControllerInputPacket();
}
});
buttonX = createDigitalButton("X", ControllerPacket.X_FLAG ,context);
buttonY = createDigitalButton("Y", ControllerPacket.Y_FLAG ,context);
buttonA = createDigitalButton("A", ControllerPacket.A_FLAG ,context);
buttonB = createDigitalButton("B", ControllerPacket.B_FLAG ,context);
buttonLT = new DigitalButton(context);
buttonLT.setText("LT");
@ -343,38 +277,8 @@ public class VirtualController
}
});
buttonLB = new DigitalButton(context);
buttonLB.setText("LB");
buttonLB.addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
@Override
public void onClick() {
inputMap |= ControllerPacket.LB_FLAG;
sendControllerInputPacket();
}
@Override
public void onRelease() {
inputMap &= ControllerPacket.LB_FLAG;
sendControllerInputPacket();
}
});
buttonRB = new DigitalButton(context);
buttonRB.setText("RB");
buttonRB.addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
@Override
public void onClick() {
inputMap |= ControllerPacket.RB_FLAG;
sendControllerInputPacket();
}
@Override
public void onRelease() {
inputMap &= ControllerPacket.RB_FLAG;
sendControllerInputPacket();
}
});
buttonLB = createDigitalButton("LB", ControllerPacket.LB_FLAG ,context);
buttonRB = createDigitalButton("RB", ControllerPacket.RB_FLAG ,context);
stick = new AnalogStick(context);
@ -405,7 +309,6 @@ public class VirtualController
}
});
refreshLayout();
}
@ -456,8 +359,8 @@ public class VirtualController
stick = new AnalogStick(context);
stick2 = new AnalogStick(context);
configuration = true;
configuration = true;
// receive touch events
frame_layout.setOnTouchListener(new View.OnTouchListener()