mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-21 03:52:48 +00:00
Persist OSC configuration between launches
This commit is contained in:
parent
bbec3402d9
commit
75057f2d39
@ -164,8 +164,8 @@ public class AnalogStick extends VirtualControllerElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public AnalogStick(VirtualController controller, Context context) {
|
public AnalogStick(VirtualController controller, Context context, int elementId) {
|
||||||
super(controller, context);
|
super(controller, context, elementId);
|
||||||
// reset stick position
|
// reset stick position
|
||||||
position_stick_x = getWidth() / 2;
|
position_stick_x = getWidth() / 2;
|
||||||
position_stick_y = getHeight() / 2;
|
position_stick_y = getHeight() / 2;
|
||||||
|
@ -120,8 +120,8 @@ public class DigitalButton extends VirtualControllerElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DigitalButton(VirtualController controller, int layer, Context context) {
|
public DigitalButton(VirtualController controller, int elementId, int layer, Context context) {
|
||||||
super(controller, context);
|
super(controller, context, elementId);
|
||||||
this.layer = layer;
|
this.layer = layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ public class DigitalPad extends VirtualControllerElement {
|
|||||||
private final Paint paint = new Paint();
|
private final Paint paint = new Paint();
|
||||||
|
|
||||||
public DigitalPad(VirtualController controller, Context context) {
|
public DigitalPad(VirtualController controller, Context context) {
|
||||||
super(controller, context);
|
super(controller, context, EID_DPAD);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addDigitalPadListener(DigitalPadListener listener) {
|
public void addDigitalPadListener(DigitalPadListener listener) {
|
||||||
|
@ -10,7 +10,7 @@ import com.limelight.nvstream.input.ControllerPacket;
|
|||||||
|
|
||||||
public class LeftAnalogStick extends AnalogStick {
|
public class LeftAnalogStick extends AnalogStick {
|
||||||
public LeftAnalogStick(final VirtualController controller, final Context context) {
|
public LeftAnalogStick(final VirtualController controller, final Context context) {
|
||||||
super(controller, context);
|
super(controller, context, EID_LS);
|
||||||
|
|
||||||
addAnalogStickListener(new AnalogStick.AnalogStickListener() {
|
addAnalogStickListener(new AnalogStick.AnalogStickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -8,7 +8,7 @@ import android.content.Context;
|
|||||||
|
|
||||||
public class LeftTrigger extends DigitalButton {
|
public class LeftTrigger extends DigitalButton {
|
||||||
public LeftTrigger(final VirtualController controller, final int layer, final Context context) {
|
public LeftTrigger(final VirtualController controller, final int layer, final Context context) {
|
||||||
super(controller, layer, context);
|
super(controller, EID_LT, layer, context);
|
||||||
addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
|
addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick() {
|
public void onClick() {
|
||||||
|
@ -10,7 +10,7 @@ import com.limelight.nvstream.input.ControllerPacket;
|
|||||||
|
|
||||||
public class RightAnalogStick extends AnalogStick {
|
public class RightAnalogStick extends AnalogStick {
|
||||||
public RightAnalogStick(final VirtualController controller, final Context context) {
|
public RightAnalogStick(final VirtualController controller, final Context context) {
|
||||||
super(controller, context);
|
super(controller, context, EID_RS);
|
||||||
|
|
||||||
addAnalogStickListener(new AnalogStick.AnalogStickListener() {
|
addAnalogStickListener(new AnalogStick.AnalogStickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -8,7 +8,7 @@ import android.content.Context;
|
|||||||
|
|
||||||
public class RightTrigger extends DigitalButton {
|
public class RightTrigger extends DigitalButton {
|
||||||
public RightTrigger(final VirtualController controller, final int layer, final Context context) {
|
public RightTrigger(final VirtualController controller, final int layer, final Context context) {
|
||||||
super(controller, layer, context);
|
super(controller, EID_RT, layer, context);
|
||||||
addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
|
addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick() {
|
public void onClick() {
|
||||||
|
@ -68,6 +68,7 @@ public class VirtualController {
|
|||||||
|
|
||||||
if (currentMode == ControllerMode.Configuration) {
|
if (currentMode == ControllerMode.Configuration) {
|
||||||
currentMode = ControllerMode.Active;
|
currentMode = ControllerMode.Active;
|
||||||
|
VirtualControllerConfigurationLoader.saveProfile(VirtualController.this, context);
|
||||||
message = "Exiting configuration mode";
|
message = "Exiting configuration mode";
|
||||||
} else {
|
} else {
|
||||||
currentMode = ControllerMode.Configuration;
|
currentMode = ControllerMode.Configuration;
|
||||||
@ -124,7 +125,11 @@ public class VirtualController {
|
|||||||
params.topMargin = 15;
|
params.topMargin = 15;
|
||||||
relative_layout.addView(buttonConfigure, params);
|
relative_layout.addView(buttonConfigure, params);
|
||||||
|
|
||||||
|
// Start with the default layout
|
||||||
VirtualControllerConfigurationLoader.createDefaultLayout(this, context);
|
VirtualControllerConfigurationLoader.createDefaultLayout(this, context);
|
||||||
|
|
||||||
|
// Apply user preferences onto the default layout
|
||||||
|
VirtualControllerConfigurationLoader.loadFromPreferences(this, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ControllerMode getControllerMode() {
|
public ControllerMode getControllerMode() {
|
||||||
|
@ -4,14 +4,19 @@
|
|||||||
|
|
||||||
package com.limelight.binding.input.virtual_controller;
|
package com.limelight.binding.input.virtual_controller;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
|
|
||||||
import com.limelight.nvstream.input.ControllerPacket;
|
import com.limelight.nvstream.input.ControllerPacket;
|
||||||
import com.limelight.preferences.PreferenceConfiguration;
|
import com.limelight.preferences.PreferenceConfiguration;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
public class VirtualControllerConfigurationLoader {
|
public class VirtualControllerConfigurationLoader {
|
||||||
private static final String PROFILE_PATH = "profiles";
|
public static final String OSC_PREFERENCE = "OSC";
|
||||||
|
|
||||||
private static int getPercent(
|
private static int getPercent(
|
||||||
int percent,
|
int percent,
|
||||||
@ -59,6 +64,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static DigitalButton createDigitalButton(
|
private static DigitalButton createDigitalButton(
|
||||||
|
final int elementId,
|
||||||
final int keyShort,
|
final int keyShort,
|
||||||
final int keyLong,
|
final int keyLong,
|
||||||
final int layer,
|
final int layer,
|
||||||
@ -66,7 +72,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
final int icon,
|
final int icon,
|
||||||
final VirtualController controller,
|
final VirtualController controller,
|
||||||
final Context context) {
|
final Context context) {
|
||||||
DigitalButton button = new DigitalButton(controller, layer, context);
|
DigitalButton button = new DigitalButton(controller, elementId, layer, context);
|
||||||
button.setText(text);
|
button.setText(text);
|
||||||
button.setIcon(icon);
|
button.setIcon(icon);
|
||||||
|
|
||||||
@ -162,6 +168,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_A,
|
||||||
ControllerPacket.A_FLAG, 0, 1, "A", -1, controller, context),
|
ControllerPacket.A_FLAG, 0, 1, "A", -1, controller, context),
|
||||||
getPercent(BUTTON_BASE_X, screen.widthPixels) + getPercent(BUTTON_WIDTH, screen.widthPixels),
|
getPercent(BUTTON_BASE_X, screen.widthPixels) + getPercent(BUTTON_WIDTH, screen.widthPixels),
|
||||||
getPercent(BUTTON_BASE_Y, screen.heightPixels) + 2 * getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
getPercent(BUTTON_BASE_Y, screen.heightPixels) + 2 * getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
||||||
@ -170,6 +177,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_B,
|
||||||
ControllerPacket.B_FLAG, 0, 1, "B", -1, controller, context),
|
ControllerPacket.B_FLAG, 0, 1, "B", -1, controller, context),
|
||||||
getPercent(BUTTON_BASE_X, screen.widthPixels) + 2 * getPercent(BUTTON_WIDTH, screen.widthPixels),
|
getPercent(BUTTON_BASE_X, screen.widthPixels) + 2 * getPercent(BUTTON_WIDTH, screen.widthPixels),
|
||||||
getPercent(BUTTON_BASE_Y, screen.heightPixels) + getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
getPercent(BUTTON_BASE_Y, screen.heightPixels) + getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
||||||
@ -178,6 +186,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_X,
|
||||||
ControllerPacket.X_FLAG, 0, 1, "X", -1, controller, context),
|
ControllerPacket.X_FLAG, 0, 1, "X", -1, controller, context),
|
||||||
getPercent(BUTTON_BASE_X, screen.widthPixels),
|
getPercent(BUTTON_BASE_X, screen.widthPixels),
|
||||||
getPercent(BUTTON_BASE_Y, screen.heightPixels) + getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
getPercent(BUTTON_BASE_Y, screen.heightPixels) + getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
||||||
@ -186,6 +195,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_Y,
|
||||||
ControllerPacket.Y_FLAG, 0, 1, "Y", -1, controller, context),
|
ControllerPacket.Y_FLAG, 0, 1, "Y", -1, controller, context),
|
||||||
getPercent(BUTTON_BASE_X, screen.widthPixels) + getPercent(BUTTON_WIDTH, screen.widthPixels),
|
getPercent(BUTTON_BASE_X, screen.widthPixels) + getPercent(BUTTON_WIDTH, screen.widthPixels),
|
||||||
getPercent(BUTTON_BASE_Y, screen.heightPixels),
|
getPercent(BUTTON_BASE_Y, screen.heightPixels),
|
||||||
@ -210,6 +220,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_LB,
|
||||||
ControllerPacket.LB_FLAG, 0, 1, "LB", -1, controller, context),
|
ControllerPacket.LB_FLAG, 0, 1, "LB", -1, controller, context),
|
||||||
getPercent(BUTTON_BASE_X, screen.widthPixels),
|
getPercent(BUTTON_BASE_X, screen.widthPixels),
|
||||||
getPercent(BUTTON_BASE_Y, screen.heightPixels) + 2 * getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
getPercent(BUTTON_BASE_Y, screen.heightPixels) + 2 * getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
||||||
@ -218,6 +229,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_RB,
|
||||||
ControllerPacket.RB_FLAG, 0, 1, "RB", -1, controller, context),
|
ControllerPacket.RB_FLAG, 0, 1, "RB", -1, controller, context),
|
||||||
getPercent(BUTTON_BASE_X, screen.widthPixels) + 2 * getPercent(BUTTON_WIDTH, screen.widthPixels),
|
getPercent(BUTTON_BASE_X, screen.widthPixels) + 2 * getPercent(BUTTON_WIDTH, screen.widthPixels),
|
||||||
getPercent(BUTTON_BASE_Y, screen.heightPixels) + 2 * getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
getPercent(BUTTON_BASE_Y, screen.heightPixels) + 2 * getPercent(BUTTON_HEIGHT, screen.heightPixels),
|
||||||
@ -240,6 +252,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_BACK,
|
||||||
ControllerPacket.BACK_FLAG, 0, 2, "BACK", -1, controller, context),
|
ControllerPacket.BACK_FLAG, 0, 2, "BACK", -1, controller, context),
|
||||||
getPercent(40, screen.widthPixels),
|
getPercent(40, screen.widthPixels),
|
||||||
getPercent(90, screen.heightPixels),
|
getPercent(90, screen.heightPixels),
|
||||||
@ -248,6 +261,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_START,
|
||||||
ControllerPacket.PLAY_FLAG, 0, 3, "START", -1, controller, context),
|
ControllerPacket.PLAY_FLAG, 0, 3, "START", -1, controller, context),
|
||||||
getPercent(40, screen.widthPixels) + getPercent(10, screen.widthPixels),
|
getPercent(40, screen.widthPixels) + getPercent(10, screen.widthPixels),
|
||||||
getPercent(90, screen.heightPixels),
|
getPercent(90, screen.heightPixels),
|
||||||
@ -257,6 +271,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_LSB,
|
||||||
ControllerPacket.LS_CLK_FLAG, 0, 1, "L3", -1, controller, context),
|
ControllerPacket.LS_CLK_FLAG, 0, 1, "L3", -1, controller, context),
|
||||||
getPercent(2, screen.widthPixels),
|
getPercent(2, screen.widthPixels),
|
||||||
getPercent(80, screen.heightPixels),
|
getPercent(80, screen.heightPixels),
|
||||||
@ -265,6 +280,7 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
);
|
);
|
||||||
|
|
||||||
controller.addElement(createDigitalButton(
|
controller.addElement(createDigitalButton(
|
||||||
|
VirtualControllerElement.EID_RSB,
|
||||||
ControllerPacket.RS_CLK_FLAG, 0, 1, "R3", -1, controller, context),
|
ControllerPacket.RS_CLK_FLAG, 0, 1, "R3", -1, controller, context),
|
||||||
getPercent(89, screen.widthPixels),
|
getPercent(89, screen.widthPixels),
|
||||||
getPercent(80, screen.heightPixels),
|
getPercent(80, screen.heightPixels),
|
||||||
@ -274,34 +290,39 @@ public class VirtualControllerConfigurationLoader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
public static void saveProfile(final VirtualController controller,
|
||||||
NOT IMPLEMENTED YET,
|
|
||||||
this should later be used to store and load a profile for the virtual controller
|
|
||||||
public static void saveProfile(final String name,
|
|
||||||
final VirtualController controller,
|
|
||||||
final Context context) {
|
final Context context) {
|
||||||
|
SharedPreferences.Editor prefEditor = context.getSharedPreferences(OSC_PREFERENCE, Activity.MODE_PRIVATE).edit();
|
||||||
|
|
||||||
SharedPreferences preferences = context.getSharedPreferences(PROFILE_PATH + "/" +
|
|
||||||
name, Activity.MODE_PRIVATE);
|
|
||||||
|
|
||||||
JSONArray elementConfigurations = new JSONArray();
|
|
||||||
for (VirtualControllerElement element : controller.getElements()) {
|
for (VirtualControllerElement element : controller.getElements()) {
|
||||||
JSONObject elementConfiguration = new JSONObject();
|
String prefKey = ""+element.elementId;
|
||||||
try {
|
try {
|
||||||
elementConfiguration.put("TYPE", element.getClass().getName());
|
prefEditor.putString(prefKey, element.getConfiguration().toString());
|
||||||
elementConfiguration.put("CONFIGURATION", element.getConfiguration());
|
} catch (JSONException e) {
|
||||||
elementConfigurations.put(elementConfiguration);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedPreferences.Editor editor= preferences.edit();
|
prefEditor.apply();
|
||||||
editor.putString("ELEMENTS", elementConfigurations.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadFromPreferences(final VirtualController controller) {
|
public static void loadFromPreferences(final VirtualController controller, final Context context) {
|
||||||
|
SharedPreferences pref = context.getSharedPreferences(OSC_PREFERENCE, Activity.MODE_PRIVATE);
|
||||||
|
|
||||||
|
for (VirtualControllerElement element : controller.getElements()) {
|
||||||
|
String prefKey = ""+element.elementId;
|
||||||
|
|
||||||
|
String jsonConfig = pref.getString(prefKey, null);
|
||||||
|
if (jsonConfig != null) {
|
||||||
|
try {
|
||||||
|
element.loadConfiguration(new JSONObject(jsonConfig));
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
// Remove the corrupt element from the preferences
|
||||||
|
pref.edit().remove(prefKey).apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
@ -14,10 +14,30 @@ import android.view.MotionEvent;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
public abstract class VirtualControllerElement extends View {
|
public abstract class VirtualControllerElement extends View {
|
||||||
protected static boolean _PRINT_DEBUG_INFORMATION = false;
|
protected static boolean _PRINT_DEBUG_INFORMATION = false;
|
||||||
|
|
||||||
|
public static final int EID_DPAD = 1;
|
||||||
|
public static final int EID_LT = 2;
|
||||||
|
public static final int EID_RT = 3;
|
||||||
|
public static final int EID_LB = 4;
|
||||||
|
public static final int EID_RB = 5;
|
||||||
|
public static final int EID_A = 6;
|
||||||
|
public static final int EID_B = 7;
|
||||||
|
public static final int EID_X = 8;
|
||||||
|
public static final int EID_Y = 9;
|
||||||
|
public static final int EID_BACK = 10;
|
||||||
|
public static final int EID_START = 11;
|
||||||
|
public static final int EID_LS = 12;
|
||||||
|
public static final int EID_RS = 13;
|
||||||
|
public static final int EID_LSB = 14;
|
||||||
|
public static final int EID_RSB = 15;
|
||||||
|
|
||||||
protected VirtualController virtualController;
|
protected VirtualController virtualController;
|
||||||
|
protected final int elementId;
|
||||||
|
|
||||||
private final Paint paint = new Paint();
|
private final Paint paint = new Paint();
|
||||||
|
|
||||||
@ -40,10 +60,11 @@ public abstract class VirtualControllerElement extends View {
|
|||||||
|
|
||||||
private Mode currentMode = Mode.Normal;
|
private Mode currentMode = Mode.Normal;
|
||||||
|
|
||||||
protected VirtualControllerElement(VirtualController controller, Context context) {
|
protected VirtualControllerElement(VirtualController controller, Context context, int elementId) {
|
||||||
super(context);
|
super(context);
|
||||||
|
|
||||||
this.virtualController = controller;
|
this.virtualController = controller;
|
||||||
|
this.elementId = elementId;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void moveElement(int pressed_x, int pressed_y, int x, int y) {
|
protected void moveElement(int pressed_x, int pressed_y, int x, int y) {
|
||||||
@ -278,13 +299,28 @@ public abstract class VirtualControllerElement extends View {
|
|||||||
return getWidth() > getHeight() ? getHeight() : getWidth();
|
return getWidth() > getHeight() ? getHeight() : getWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
public JSONObject getConfiguration () {
|
|
||||||
JSONObject configuration = new JSONObject();
|
|
||||||
return configuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void loadConfiguration (JSONObject configuration) {
|
public JSONObject getConfiguration() throws JSONException {
|
||||||
}
|
JSONObject configuration = new JSONObject();
|
||||||
*/
|
|
||||||
|
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) getLayoutParams();
|
||||||
|
|
||||||
|
configuration.put("LEFT", layoutParams.leftMargin);
|
||||||
|
configuration.put("TOP", layoutParams.topMargin);
|
||||||
|
configuration.put("WIDTH", layoutParams.width);
|
||||||
|
configuration.put("HEIGHT", layoutParams.height);
|
||||||
|
|
||||||
|
return configuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadConfiguration(JSONObject configuration) throws JSONException {
|
||||||
|
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) getLayoutParams();
|
||||||
|
|
||||||
|
layoutParams.leftMargin = configuration.getInt("LEFT");
|
||||||
|
layoutParams.topMargin = configuration.getInt("TOP");
|
||||||
|
layoutParams.width = configuration.getInt("WIDTH");
|
||||||
|
layoutParams.height = configuration.getInt("HEIGHT");
|
||||||
|
|
||||||
|
requestLayout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user