Revision 362807f0
Added by Leszek Koltunski over 4 years ago
src/main/java/org/distorted/dialogs/RubikDialogScoresPagerAdapter.java | ||
---|---|---|
24 | 24 |
import androidx.fragment.app.FragmentActivity; |
25 | 25 |
import androidx.viewpager.widget.PagerAdapter; |
26 | 26 |
import androidx.viewpager.widget.ViewPager; |
27 |
|
|
28 |
import android.util.DisplayMetrics; |
|
27 | 29 |
import android.view.View; |
28 | 30 |
import android.view.ViewGroup; |
29 | 31 |
import android.widget.LinearLayout; |
... | ... | |
198 | 200 |
@NonNull |
199 | 201 |
public Object instantiateItem(@NonNull ViewGroup collection, int position) |
200 | 202 |
{ |
201 |
mViews[position] = new RubikDialogScoresView(mAct, mIsSubmitting); |
|
203 |
DisplayMetrics metrics = mAct.getResources().getDisplayMetrics(); |
|
204 |
|
|
205 |
mViews[position] = new RubikDialogScoresView(mAct, metrics.heightPixels, mIsSubmitting); |
|
202 | 206 |
collection.addView(mViews[position]); |
203 | 207 |
|
204 | 208 |
boolean allCreated = true; |
src/main/java/org/distorted/dialogs/RubikDialogScoresView.java | ||
---|---|---|
23 | 23 |
import android.content.res.Resources; |
24 | 24 |
import androidx.fragment.app.FragmentActivity; |
25 | 25 |
import android.util.AttributeSet; |
26 |
import android.util.TypedValue; |
|
26 | 27 |
import android.view.View; |
27 | 28 |
import android.widget.FrameLayout; |
28 | 29 |
import android.widget.ImageView; |
... | ... | |
30 | 31 |
import android.widget.TextView; |
31 | 32 |
|
32 | 33 |
import org.distorted.main.R; |
34 |
import org.distorted.main.RubikActivity; |
|
33 | 35 |
import org.distorted.objects.RubikObjectList; |
34 | 36 |
import org.distorted.scores.RubikScores; |
35 | 37 |
|
... | ... | |
39 | 41 |
|
40 | 42 |
public class RubikDialogScoresView extends FrameLayout |
41 | 43 |
{ |
42 |
LinearLayout mLayout; |
|
44 |
private LinearLayout mLayout; |
|
45 |
private int mWidth; |
|
43 | 46 |
|
44 | 47 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
45 | 48 |
|
... | ... | |
57 | 60 |
|
58 | 61 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
59 | 62 |
|
60 |
public RubikDialogScoresView(Context context, boolean isSubmitting) |
|
63 |
public RubikDialogScoresView(Context context, int width, boolean isSubmitting)
|
|
61 | 64 |
{ |
62 | 65 |
super(context); |
63 | 66 |
|
67 |
mWidth = width; |
|
68 |
|
|
64 | 69 |
View view = inflate(context, R.layout.dialog_scores_downloading, null); |
65 | 70 |
addView(view); |
66 | 71 |
TextView text = findViewById(R.id.message_text); |
... | ... | |
75 | 80 |
TextView text = levelLayout.findViewById(R.id.scoresScrambleTitle); |
76 | 81 |
text.setText(act.getString(R.string.lv_placeholder,level+1)); |
77 | 82 |
|
83 |
int size = (int)(mWidth* RubikActivity.SCORES_LEVEL_TEXT); |
|
84 |
text.setTextSize(TypedValue.COMPLEX_UNIT_PX, size); |
|
85 |
|
|
78 | 86 |
Resources res = act.getResources(); |
79 | 87 |
String packageName = act.getPackageName(); |
80 | 88 |
|
... | ... | |
93 | 101 |
String theirTime; |
94 | 102 |
int theirCountryID; |
95 | 103 |
|
104 |
int height = (int)(mWidth* RubikActivity.SCORES_ITEM_TEXT); |
|
96 | 105 |
int white = res.getColor(R.color.white); |
97 | 106 |
int red = res.getColor(R.color.red); |
98 | 107 |
boolean equals; |
... | ... | |
104 | 113 |
if( !mySubmitted && myRecordInSeconds<time[j] && !inserted ) |
105 | 114 |
{ |
106 | 115 |
inserted = true; |
107 |
View row = createRow(act, myCountryID, myName, myRecord, red); |
|
116 |
View row = createRow(act, myCountryID, myName, myRecord, height, red);
|
|
108 | 117 |
levelLayout.addView(row); |
109 | 118 |
} |
110 | 119 |
|
... | ... | |
115 | 124 |
if( equals ) inserted=true; |
116 | 125 |
theirCountryID = res.getIdentifier( country[j], "drawable", packageName); |
117 | 126 |
theirTime = Float.toString(time[j]); |
118 |
View row = createRow(act, theirCountryID, name[j], theirTime, equals ? red:white); |
|
127 |
View row = createRow(act, theirCountryID, name[j], theirTime, height, equals ? red:white);
|
|
119 | 128 |
levelLayout.addView(row); |
120 | 129 |
} |
121 | 130 |
} |
... | ... | |
123 | 132 |
|
124 | 133 |
if( !inserted ) |
125 | 134 |
{ |
126 |
View row = createRow(act, myCountryID, myName, myRecord, red); |
|
135 |
View row = createRow(act, myCountryID, myName, myRecord, height, red);
|
|
127 | 136 |
levelLayout.addView(row); |
128 | 137 |
} |
129 | 138 |
|
... | ... | |
132 | 141 |
|
133 | 142 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
134 | 143 |
|
135 |
private View createRow(FragmentActivity act, int countryID, String name, String time, int color) |
|
144 |
private View createRow(FragmentActivity act, int countryID, String name, String time, int height, int color)
|
|
136 | 145 |
{ |
137 | 146 |
View row = inflate(act, R.layout.dialog_scores_scramble_row, null); |
138 | 147 |
|
... | ... | |
147 | 156 |
textName.setTextColor(color); |
148 | 157 |
textTime.setTextColor(color); |
149 | 158 |
|
159 |
textName.setTextSize(TypedValue.COMPLEX_UNIT_PX, height); |
|
160 |
textTime.setTextSize(TypedValue.COMPLEX_UNIT_PX, height); |
|
161 |
|
|
150 | 162 |
return row; |
151 | 163 |
} |
152 | 164 |
|
src/main/java/org/distorted/main/RubikActivity.java | ||
---|---|---|
52 | 52 |
public static final float MENU_ITEM_SIZE = 0.12f; |
53 | 53 |
public static final float PATTERN_GROUP_TEXT = 0.03f; |
54 | 54 |
public static final float PATTERN_CHILD_TEXT = 0.02f; |
55 |
public static final float SCORES_LEVEL_TEXT = 0.035f; |
|
56 |
public static final float SCORES_ITEM_TEXT = 0.030f; |
|
55 | 57 |
|
56 | 58 |
public static final float MENU_BIG_TEXT_SIZE = 0.05f; |
57 | 59 |
public static final float MENU_MEDIUM_TEXT_SIZE= 0.04f; |
src/main/res/layout/dialog_scores_scramble_row.xml | ||
---|---|---|
1 | 1 |
<?xml version="1.0" encoding="utf-8"?> |
2 | 2 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
3 | 3 |
android:layout_width="fill_parent" |
4 |
android:layout_height="0dp"
|
|
4 |
android:layout_height="wrap_content"
|
|
5 | 5 |
android:paddingBottom="2dp" |
6 | 6 |
android:paddingTop="2dp" |
7 | 7 |
android:orientation="horizontal" > |
... | ... | |
10 | 10 |
android:id="@+id/scoresScrambleRowCountry" |
11 | 11 |
android:layout_width="match_parent" |
12 | 12 |
android:layout_height="match_parent" |
13 |
android:paddingBottom="3dp" |
|
14 |
android:paddingTop="3dp" |
|
13 | 15 |
android:layout_weight="1.5" |
14 |
android:textSize="20sp" |
|
15 | 16 |
android:gravity="start" |
16 | 17 |
android:background="@color/black" /> |
17 | 18 |
|
src/main/res/layout/dialog_scores_scramble_title.xml | ||
---|---|---|
14 | 14 |
<TextView |
15 | 15 |
android:id="@+id/scoresScrambleTitle" |
16 | 16 |
android:layout_width="match_parent" |
17 |
android:layout_height="32dp"
|
|
17 |
android:layout_height="wrap_content"
|
|
18 | 18 |
android:textSize="24sp" |
19 | 19 |
android:gravity="center" |
20 | 20 |
android:background="@color/grey" |
Also available in: Unified diff
Make the Scores Dialog screen-size invariant.