commit 2eb747435884548e0e3175c4a9cb5019c4ab0875
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat Jun 20 23:55:17 2020 +0100

    Improvements to the UI - make it proportional regardless of the physical screen size. (Part 5 - first 3 Dialogs)

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogAbout.java b/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
index 41f8e00b..559aefd3 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
@@ -31,13 +31,17 @@ import androidx.appcompat.app.AppCompatDialogFragment;
 
 import android.text.method.LinkMovementMethod;
 import android.text.method.MovementMethod;
+import android.util.DisplayMetrics;
+import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
+import android.widget.Button;
 import android.widget.TextView;
 
 import org.distorted.main.R;
+import org.distorted.main.RubikActivity;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -51,7 +55,14 @@ public class RubikDialogAbout extends AppCompatDialogFragment
     LayoutInflater inflater = act.getLayoutInflater();
     AlertDialog.Builder builder = new AlertDialog.Builder(act);
 
+    DisplayMetrics displaymetrics = new DisplayMetrics();
+    act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float okSize   = displaymetrics.widthPixels * RubikActivity.MENU_MEDIUM_TEXT_SIZE;
+    final float textSize = displaymetrics.widthPixels * RubikActivity.MENU_SMALL_TEXT_SIZE;
+
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
+    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
     tv.setText(R.string.about);
     builder.setCustomTitle(tv);
 
@@ -77,17 +88,21 @@ public class RubikDialogAbout extends AppCompatDialogFragment
       }
     catch (PackageManager.NameNotFoundException e)
       {
-      appVers = "1.1.1";
+      appVers = "1.2.2";
       }
 
+    text.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
     text.setText(getString(R.string.ap_placeholder,appName, appVers));
 
     MovementMethod mm = LinkMovementMethod.getInstance();
     TextView text1 = view.findViewById(R.id.about_section1);
+    text1.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
     text1.setMovementMethod(mm);
     TextView text2 = view.findViewById(R.id.about_section2);
+    text2.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
     text2.setMovementMethod(mm);
     TextView text3 = view.findViewById(R.id.about_section3);
+    text3.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
     text3.setMovementMethod(mm);
 
     builder.setView(view);
@@ -101,6 +116,16 @@ public class RubikDialogAbout extends AppCompatDialogFragment
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
       }
 
+    dialog.setOnShowListener(new DialogInterface.OnShowListener()
+      {
+      @Override
+      public void onShow(DialogInterface dialog)
+        {
+        Button btnPositive = ((AlertDialog)dialog).getButton(Dialog.BUTTON_POSITIVE);
+        btnPositive.setTextSize(TypedValue.COMPLEX_UNIT_PX, okSize);
+        }
+      });
+
     return dialog;
     }
   }
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogEffects.java b/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
index a87867da..5e56b158 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
@@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatDialogFragment;
 import android.util.DisplayMetrics;
+import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -35,6 +36,7 @@ import android.view.Window;
 import android.view.WindowManager;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
+import android.widget.Button;
 import android.widget.LinearLayout;
 import android.widget.SeekBar;
 import android.widget.Spinner;
@@ -42,12 +44,14 @@ import android.widget.TextView;
 
 import org.distorted.effects.BaseEffect;
 import org.distorted.main.R;
+import org.distorted.main.RubikActivity;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class RubikDialogEffects extends AppCompatDialogFragment implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
   {
   private TextView[] mDurationText;
+  private float mTextSize;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -55,10 +59,11 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     {
     BaseEffect.Type beType = BaseEffect.Type.getType(index);
     DisplayMetrics metrics = act.getResources().getDisplayMetrics();
-    float scale = metrics.density;
+    final float scale = metrics.density;
+    mTextSize = metrics.widthPixels * RubikActivity.MENU_SMALL_TEXT_SIZE;
 
-    int textH=32;
-    int layoH=36;
+    int textH= (int)(mTextSize);
+    int layoH= (int)(1.2f*mTextSize);
     int margH=10;
 
     ///// OUTER LAYOUT ///////////////////////////////////////////////////////////////////
@@ -86,11 +91,11 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,layoutHeight);
 
     TextView textView = new TextView(act);
+    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize);
     textView.setText(beType.getText());
     textView.setLayoutParams(textParams);
     textView.setGravity(Gravity.CENTER);
     textView.setPadding(padding,0,padding,0);
-    textView.setTextAppearance(act,android.R.style.TextAppearance_Small);
     outerLayout.addView(textView);
 
     ///// INNER LAYOUT1 //////////////////////////////////////////////////////////////////
@@ -110,21 +115,21 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     LinearLayout.LayoutParams text1LayoutParams = new LinearLayout.LayoutParams(0,layoutHeight,0.25f);
 
     TextView text1View = new TextView(act);
+    text1View.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize);
     text1View.setText(R.string.duration);
     text1View.setLayoutParams(text1LayoutParams);
     text1View.setGravity(Gravity.START|Gravity.CENTER);
     text1View.setPadding(text1Padding,0,text1Padding,0);
-    text1View.setTextAppearance(act,android.R.style.TextAppearance_Small);
     innerLayout1.addView(text1View);
     //////////////////////////////////////////////////////////////////
     int text2Padding = (int)(scale*5 + 0.5f);
     LinearLayout.LayoutParams text2LayoutParams = new LinearLayout.LayoutParams(0,layoutHeight,0.25f);
 
     mDurationText[index] = new TextView(act);
+    mDurationText[index].setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize);
     mDurationText[index].setLayoutParams(text2LayoutParams);
     mDurationText[index].setGravity(Gravity.START|Gravity.CENTER);
     mDurationText[index].setPadding(text2Padding,0,text2Padding,0);
-    mDurationText[index].setTextAppearance(act,android.R.style.TextAppearance_Small);
     innerLayout1.addView(mDurationText[index]);
     //////////////////////////////////////////////////////////////////
     int seekPadding = (int)(scale*10 + 0.5f);
@@ -156,11 +161,11 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     LinearLayout.LayoutParams text3LayoutParams = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,0.25f);
 
     TextView text3View = new TextView(act);
+    text3View.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize);
     text3View.setText(R.string.type);
     text3View.setLayoutParams(text3LayoutParams);
     text3View.setGravity(Gravity.START|Gravity.CENTER);
     text3View.setPadding(text3Padding,0,text3Padding,0);
-    text3View.setTextAppearance(act,android.R.style.TextAppearance_Small);
     innerLayout2.addView(text3View);
     //////////////////////////////////////////////////////////////////
     int spinnerPadding = (int)(scale*10 + 0.5f);
@@ -207,6 +212,13 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     LayoutInflater inflater = act.getLayoutInflater();
     AlertDialog.Builder builder = new AlertDialog.Builder(act);
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
+
+    DisplayMetrics displaymetrics = new DisplayMetrics();
+    act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float okSize   = displaymetrics.widthPixels * RubikActivity.MENU_MEDIUM_TEXT_SIZE;
+
+    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
     tv.setText(R.string.effects);
     builder.setCustomTitle(tv);
 
@@ -248,6 +260,16 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
       }
 
+    dialog.setOnShowListener(new DialogInterface.OnShowListener()
+      {
+      @Override
+      public void onShow(DialogInterface dialog)
+        {
+        Button btnPositive = ((AlertDialog)dialog).getButton(Dialog.BUTTON_POSITIVE);
+        btnPositive.setTextSize(TypedValue.COMPLEX_UNIT_PX, okSize);
+        }
+      });
+
     return dialog;
     }
 
@@ -255,6 +277,8 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
 
   public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
     {
+    ((TextView) parent.getChildAt(0)).setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize);
+
     int parentID = parent.getId();
     int len = BaseEffect.Type.LENGTH;
 
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogMain.java b/src/main/java/org/distorted/dialogs/RubikDialogMain.java
index a4d4a447..4e8f4c7b 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogMain.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogMain.java
@@ -52,7 +52,7 @@ public class RubikDialogMain extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    float textSize = displaymetrics.widthPixels * RubikActivity.MENU_TEXT_SIZE;
+    float textSize = displaymetrics.widthPixels * RubikActivity.MENU_MEDIUM_TEXT_SIZE;
     int buttonSize = (int)(2.5f*textSize);
 
     Button play = view.findViewById(R.id.rubikPlay);
diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index 543f372f..2b3d5031 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -49,7 +49,10 @@ public class RubikActivity extends AppCompatActivity
     public static final float BUTTON_TEXT_SIZE = 0.05f;
     public static final float TITLE_TEXT_SIZE  = 0.06f;
     public static final float BITMAP_TEXT_SIZE = 0.09f;
-    public static final float MENU_TEXT_SIZE   = 0.04f;
+
+    public static final float MENU_BIG_TEXT_SIZE   = 0.05f;
+    public static final float MENU_MEDIUM_TEXT_SIZE= 0.04f;
+    public static final float MENU_SMALL_TEXT_SIZE = 0.035f;
 
     private boolean mJustStarted;
     private FirebaseAnalytics mFirebaseAnalytics;
