From 350a4d8825331852135f72f7c04214bc361654eb Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 6 Nov 2014 20:07:01 -0800 Subject: [PATCH] Add a helper class to perform initial UI fixups (currently adding padding on TV devices) --- app/src/main/java/com/limelight/AppView.java | 3 ++ app/src/main/java/com/limelight/PcView.java | 3 ++ .../limelight/preferences/StreamSettings.java | 3 ++ .../java/com/limelight/utils/UiHelper.java | 31 +++++++++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 app/src/main/java/com/limelight/utils/UiHelper.java diff --git a/app/src/main/java/com/limelight/AppView.java b/app/src/main/java/com/limelight/AppView.java index 617d379c..cd1ea178 100644 --- a/app/src/main/java/com/limelight/AppView.java +++ b/app/src/main/java/com/limelight/AppView.java @@ -15,6 +15,7 @@ import com.limelight.nvstream.http.NvHTTP; import com.limelight.R; import com.limelight.utils.Dialog; import com.limelight.utils.SpinnerDialog; +import com.limelight.utils.UiHelper; import android.app.Activity; import android.content.Intent; @@ -52,6 +53,8 @@ public class AppView extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_app_view); + + UiHelper.notifyNewRootView(this); byte[] address = getIntent().getByteArrayExtra(ADDRESS_EXTRA); uniqueId = getIntent().getStringExtra(UNIQUEID_EXTRA); diff --git a/app/src/main/java/com/limelight/PcView.java b/app/src/main/java/com/limelight/PcView.java index 4717595a..0683dce6 100644 --- a/app/src/main/java/com/limelight/PcView.java +++ b/app/src/main/java/com/limelight/PcView.java @@ -17,6 +17,7 @@ import com.limelight.nvstream.wol.WakeOnLanSender; import com.limelight.preferences.AddComputerManually; import com.limelight.preferences.StreamSettings; import com.limelight.utils.Dialog; +import com.limelight.utils.UiHelper; import android.app.Activity; import android.app.Service; @@ -92,6 +93,8 @@ public class PcView extends Activity { private void initializeViews() { setContentView(R.layout.activity_pc_view); + UiHelper.notifyNewRootView(this); + // Set default preferences if we've never been run PreferenceManager.setDefaultValues(this, R.xml.preferences, false); diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.java b/app/src/main/java/com/limelight/preferences/StreamSettings.java index d1d2af6c..bf7243f2 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.java +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.java @@ -8,6 +8,7 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import com.limelight.R; +import com.limelight.utils.UiHelper; public class StreamSettings extends Activity { @Override @@ -18,6 +19,8 @@ public class StreamSettings extends Activity { getFragmentManager().beginTransaction().replace( R.id.stream_settings, new SettingsFragment() ).commit(); + + UiHelper.notifyNewRootView(this); } public static class SettingsFragment extends PreferenceFragment { diff --git a/app/src/main/java/com/limelight/utils/UiHelper.java b/app/src/main/java/com/limelight/utils/UiHelper.java new file mode 100644 index 00000000..7b3e6fea --- /dev/null +++ b/app/src/main/java/com/limelight/utils/UiHelper.java @@ -0,0 +1,31 @@ +package com.limelight.utils; + +import android.app.Activity; +import android.app.UiModeManager; +import android.content.Context; +import android.content.res.Configuration; +import android.view.View; + +public class UiHelper { + + // Values from https://developer.android.com/training/tv/start/layouts.html + private static final int TV_VERTICAL_PADDING_DP = 27; + private static final int TV_HORIZONTAL_PADDING_DP = 48; + + public static void notifyNewRootView(Activity activity) + { + View rootView = (View) activity.findViewById(android.R.id.content); + UiModeManager modeMgr = (UiModeManager) activity.getSystemService(Context.UI_MODE_SERVICE); + + if (modeMgr.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) + { + // Increase view padding on TVs + float scale = activity.getResources().getDisplayMetrics().density; + int verticalPaddingPixels = (int) (TV_VERTICAL_PADDING_DP*scale + 0.5f); + int horizontalPaddingPixels = (int) (TV_HORIZONTAL_PADDING_DP*scale + 0.5f); + + rootView.setPadding(horizontalPaddingPixels, verticalPaddingPixels, + horizontalPaddingPixels, verticalPaddingPixels); + } + } +}