Merge pull request #580 from SeannyM/smaller-b

[Android] User configurable input overlay scaling
This commit is contained in:
Lioncash 2014-07-16 19:04:35 -04:00
commit 30e4366d28
5 changed files with 87 additions and 15 deletions

View File

@ -68,8 +68,11 @@
<!-- Input Config Fragment -->
<string name="input_settings">入力</string>
<string name="input_overlay">入力オーバーレイ</string>
<string name="input_overlay_desc">画面上の入力のオーバーレイを設定し。</string>
<string name="input_overlay_layout">入力オーバーレイレイアウト</string>
<string name="input_overlay_layout_desc">入力オーバーレイのためのボタンのレイアウト。</string>
<string name="controls_size">コントロールのサイズを調整し</string>
<string name="gamecube_bindings">ゲームキューブコントローラの入力バインディング</string>
<string name="controller_0">コントローラ1</string>
<string name="controller_1">コントローラ2</string>

View File

@ -69,8 +69,11 @@
<!-- Input Config Fragment -->
<string name="input_settings">Input</string>
<string name="input_overlay">Input Overlay</string>
<string name="input_overlay_desc">Configure the onscreen input overlay.</string>
<string name="input_overlay_layout">Input Overlay Layout</string>
<string name="input_overlay_layout_desc">Button layout for the input overlay.</string>
<string name="controls_size">Adjust the control size</string>
<string name="gamecube_bindings">GameCube Controller Bindings</string>
<string name="controller_0">Controller 1</string>
<string name="controller_1">Controller 2</string>

View File

@ -1,15 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/input_settings">
<Preference
android:key="inputOverlayConfigPref"
android:summary="@string/input_overlay_layout_desc"
android:title="@string/input_overlay_layout">
<intent
android:targetPackage="org.dolphinemu.dolphinemu"
android:targetClass="org.dolphinemu.dolphinemu.settings.input.overlayconfig.OverlayConfigActivity"/>
</Preference>
<PreferenceScreen
android:key="input_overlay"
android:title="@string/input_overlay"
android:summary="@string/input_overlay_desc">
<Preference
android:key="inputOverlayConfigPref"
android:summary="@string/input_overlay_layout_desc"
android:title="@string/input_overlay_layout">
<intent
android:targetPackage="org.dolphinemu.dolphinemu"
android:targetClass="org.dolphinemu.dolphinemu.settings.input.overlayconfig.OverlayConfigActivity"/>
</Preference>
<SeekBarPreference
android:key="controls_size"
android:title="@string/controls_size"
android:defaultValue="25"
android:max="75">
</SeekBarPreference>
</PreferenceScreen>
<!-- GameCube controller bindings -->
<PreferenceScreen

View File

@ -186,8 +186,31 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener
// SharedPreference to retrieve the X and Y coordinates for the InputOverlayDrawableButton.
final SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(context);
// Decide scale based on button ID
float scale;
float overlaySize = sPrefs.getInt("controls_size", 25);
overlaySize += 25;
overlaySize /= 50;
switch (resId)
{
case R.drawable.gcpad_b:
scale = 0.13f * overlaySize;
break;
case R.drawable.gcpad_x:
case R.drawable.gcpad_y:
scale = 0.18f * overlaySize;
break;
case R.drawable.gcpad_start:
scale = 0.12f * overlaySize;
break;
default:
scale = 0.20f * overlaySize;
break;
}
// Initialize the InputOverlayDrawableButton.
final Bitmap bitmap = resizeBitmap(context, BitmapFactory.decodeResource(res, resId), 0.20f);
final Bitmap bitmap = resizeBitmap(context, BitmapFactory.decodeResource(res, resId), scale);
final InputOverlayDrawableButton overlayDrawable = new InputOverlayDrawableButton(res, bitmap, buttonId);
// String ID of the Drawable. This is what is passed into SharedPreferences
@ -231,7 +254,10 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener
final SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(context);
// Initialize the InputOverlayDrawableJoystick.
final Bitmap bitmapOuter = resizeBitmap(context, BitmapFactory.decodeResource(res, resOuter), 0.30f);
float overlaySize = sPrefs.getInt("controls_size", 20);
overlaySize += 30;
overlaySize /= 50;
final Bitmap bitmapOuter = resizeBitmap(context, BitmapFactory.decodeResource(res, resOuter), 0.30f * overlaySize);
final Bitmap bitmapInner = BitmapFactory.decodeResource(res, resInner);
// String ID of the Drawable. This is what is passed into SharedPreferences

View File

@ -76,13 +76,43 @@ public final class OverlayConfigButton extends Button implements OnTouchListener
// Set the button as its own OnTouchListener.
setOnTouchListener(this);
// Set the button's icon that represents it.
setBackground(resizeDrawable(getResources().getDrawable(drawableId),
drawableId == R.drawable.gcpad_joystick_range ? 0.30f : 0.20f));
// Get the SharedPreferences instance.
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
// Decide scale based on button ID
// SeekBars are not able to set a minimum value, only a maximum value, which complicates
// things a bit. What happens here is after the SeekBar's value is retrieved, 25 is
// added so the value will never go below 25. It is then divided by 50 (25 + 25) so the
// default value will be 100%.
float scale;
float overlaySize = sharedPrefs.getInt("controls_size", 25);
overlaySize += 25;
overlaySize /= 50;
switch (drawableId)
{
case R.drawable.gcpad_b:
scale = 0.13f * overlaySize;
break;
case R.drawable.gcpad_x:
case R.drawable.gcpad_y:
scale = 0.18f * overlaySize;
break;
case R.drawable.gcpad_start:
scale = 0.12f * overlaySize;
break;
case R.drawable.gcpad_joystick_range:
scale = 0.30f * overlaySize;
break;
default:
scale = 0.20f * overlaySize;
break;
}
// Set the button's icon that represents it.
setBackground(resizeDrawable(getResources().getDrawable(drawableId), scale));
// Check if this button has previous values set that aren't the default.
final float x = sharedPrefs.getFloat(buttonId+"-X", -1f);
final float y = sharedPrefs.getFloat(buttonId+"-Y", -1f);