Project

General

Profile

« Previous | Next » 

Revision ad0c8e0e

Added by Leszek Koltunski almost 4 years ago

Make the margins and paddings proportional to screen size.

View differences:

src/main/java/org/distorted/states/RubikStatePlay.java
103 103
  void enterState(final RubikActivity act)
104 104
    {
105 105
    DisplayMetrics metrics = act.getResources().getDisplayMetrics();
106
    final float scale = metrics.density;
107 106

  
108 107
    float width = act.getScreenWidthInPixels();
109 108
    mMenuTextSize = width*RubikActivity.MENU_MEDIUM_TEXT_SIZE;
......
120 119
    LinearLayout layoutTop = act.findViewById(R.id.upperBar);
121 120
    layoutTop.removeAllViews();
122 121

  
123
    setupObjectButton(act,scale);
122
    setupObjectButton(act,width);
124 123
    layoutTop.addView(mObjButton);
125
    setupLevelSpinner(act,scale);
124
    setupLevelSpinner(act,width);
126 125
    layoutTop.addView(mLevelSpinner);
127
    setupPlayButton(act,scale);
126
    setupPlayButton(act,width);
128 127
    layoutTop.addView(mPlayButton);
129 128

  
130
    setupObjectWindow(act, scale);
129
    setupObjectWindow(act,width);
131 130

  
132 131
    // BOT ////////////////////////////
133 132

  
134 133
    LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
135 134
    layoutLeft.removeAllViews();
136 135

  
137
    setupPrevButton(act,scale,width);
136
    setupPrevButton(act,width);
138 137
    layoutLeft.addView(mPrevButton);
139
    setupSolveButton(act,scale,width);
138
    setupSolveButton(act,width);
140 139
    layoutLeft.addView(mSolveButton);
141 140

  
142 141
    LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
143 142
    layoutRight.removeAllViews();
144 143

  
145
    setupMenuButton(act,scale);
144
    setupMenuButton(act,width);
146 145
    layoutRight.addView(mMenuButton);
147 146

  
148
    setupMenuWindow(act, scale, width);
147
    setupMenuWindow(act,width);
149 148
    }
150 149

  
151 150
///////////////////////////////////////////////////////////////////////////////////////////////////
152 151

  
153
  private void setupObjectButton(final RubikActivity act, final float scale)
152
  private void setupObjectButton(final RubikActivity act, final float width)
154 153
    {
155
    int padding = (int)(3*scale + 0.5f);
156
    LinearLayout.LayoutParams objectParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT, 1.2f);
154
    int padding = (int)(width*RubikActivity.PADDING);
155
    int margin  = (int)(width*RubikActivity.MARGIN);
156

  
157
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT, 1.2f);
158
    params.topMargin    = margin;
159
    params.bottomMargin = margin;
160
    params.leftMargin   = margin;
161
    params.rightMargin  = margin;
162

  
157 163
    mObjButton = new ImageButton(act);
158
    mObjButton.setLayoutParams(objectParams);
164
    mObjButton.setLayoutParams(params);
159 165
    mObjButton.setPadding(padding,0,padding,0);
160 166
    mObjButton.setImageResource(R.drawable.cube_menu);
161 167

  
......
187 193

  
188 194
///////////////////////////////////////////////////////////////////////////////////////////////////
189 195

  
190
  private void setupLevelSpinner(final RubikActivity act, final float scale)
196
  private void setupLevelSpinner(final RubikActivity act, final float width)
191 197
    {
192
    int padding = (int)(scale* 10 + 0.5f);
193
    int margin  = (int)(scale*  3 + 0.5f);
194
    LinearLayout.LayoutParams spinnerLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT, 1.0f);
195
    spinnerLayoutParams.topMargin    = margin;
196
    spinnerLayoutParams.bottomMargin = margin;
197
    spinnerLayoutParams.leftMargin   = margin;
198
    spinnerLayoutParams.rightMargin  = margin;
198
    int padding = (int)(width*RubikActivity.PADDING);
199
    int margin  = (int)(width*RubikActivity.MARGIN);
200
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT, 1.0f);
201
    params.topMargin    = margin;
202
    params.bottomMargin = margin;
203
    params.leftMargin   = margin;
204
    params.rightMargin  = margin;
199 205

  
200 206
    mLevelSpinner = new AppCompatSpinner(act);
201
    mLevelSpinner.setLayoutParams(spinnerLayoutParams);
207
    mLevelSpinner.setLayoutParams(params);
202 208
    mLevelSpinner.setPadding(padding,0,padding,0);
203 209
    mLevelSpinner.setBackgroundResource(R.drawable.spinner);
204 210
    mLevelSpinner.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
......
234 240

  
235 241
///////////////////////////////////////////////////////////////////////////////////////////////////
236 242

  
237
  private void setupPlayButton(final RubikActivity act, final float scale)
243
  private void setupPlayButton(final RubikActivity act, final float width)
238 244
    {
239
    int padding = (int)(3*scale + 0.5f);
240
    LinearLayout.LayoutParams backParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT, 1.2f);
245
    int padding = (int)(width*RubikActivity.PADDING);
246
    int margin  = (int)(width*RubikActivity.MARGIN);
247
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT, 1.2f);
248
    params.topMargin    = margin;
249
    params.bottomMargin = margin;
250
    params.leftMargin   = margin;
251
    params.rightMargin  = margin;
252

  
241 253
    mPlayButton = new Button(act);
242
    mPlayButton.setLayoutParams(backParams);
254
    mPlayButton.setLayoutParams(params);
243 255
    mPlayButton.setPadding(padding,0,padding,0);
244 256
    mPlayButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, mButtonSize);
245 257
    mPlayButton.setText(R.string.play);
......
256 268

  
257 269
///////////////////////////////////////////////////////////////////////////////////////////////////
258 270

  
259
  private void setupMenuButton(final RubikActivity act, final float scale)
271
  private void setupMenuButton(final RubikActivity act, final float width)
260 272
    {
261
    int padding = (int)(3*scale + 0.5f);
262
    LinearLayout.LayoutParams objectParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
273
    int padding = (int)(width*RubikActivity.PADDING);
274
    int margin  = (int)(width*RubikActivity.MARGIN);
275
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
276
    params.topMargin    = margin;
277
    params.bottomMargin = margin;
278
    params.leftMargin   = margin;
279
    params.rightMargin  = margin;
280

  
263 281
    mMenuButton = new ImageButton(act);
264
    mMenuButton.setLayoutParams(objectParams);
282
    mMenuButton.setLayoutParams(params);
265 283
    mMenuButton.setPadding(padding,0,padding,0);
266 284
    mMenuButton.setImageResource(R.drawable.menu);
267 285

  
......
283 301

  
284 302
///////////////////////////////////////////////////////////////////////////////////////////////////
285 303

  
286
  private void setupSolveButton(final RubikActivity act, final float scale, final float width)
304
  private void setupSolveButton(final RubikActivity act, final float width)
287 305
    {
288
    int padding = (int)(3*scale + 0.5f);
306
    int padding  = (int)(width*RubikActivity.PADDING);
307
    int margin   = (int)(width*RubikActivity.MARGIN);
289 308
    int widthBut = (int)(width/6);
290
    LinearLayout.LayoutParams backParams = new LinearLayout.LayoutParams(widthBut, LinearLayout.LayoutParams.MATCH_PARENT);
309
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthBut, LinearLayout.LayoutParams.MATCH_PARENT);
310
    params.topMargin    = margin;
311
    params.bottomMargin = margin;
312
    params.leftMargin   = margin;
313
    params.rightMargin  = margin;
314

  
291 315
    mSolveButton = new ImageButton(act);
292
    mSolveButton.setLayoutParams(backParams);
316
    mSolveButton.setLayoutParams(params);
293 317
    mSolveButton.setPadding(padding,0,padding,0);
294 318
    mSolveButton.setImageResource(R.drawable.cube_solve);
295 319

  
......
306 330

  
307 331
///////////////////////////////////////////////////////////////////////////////////////////////////
308 332

  
309
  private void setupPrevButton(final RubikActivity act, final float scale, final float width)
333
  private void setupPrevButton(final RubikActivity act, final float width)
310 334
    {
311
    int padding = (int)(3*scale + 0.5f);
335
    int padding  = (int)(width*RubikActivity.PADDING);
336
    int margin   = (int)(width*RubikActivity.MARGIN);
312 337
    int widthBut = (int)(width/6);
313
    LinearLayout.LayoutParams backParams = new LinearLayout.LayoutParams(widthBut, LinearLayout.LayoutParams.MATCH_PARENT);
338
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthBut, LinearLayout.LayoutParams.MATCH_PARENT);
339
    params.topMargin    = margin;
340
    params.bottomMargin = margin;
341
    params.leftMargin   = margin;
342
    params.rightMargin  = margin;
343

  
314 344
    mPrevButton = new ImageButton(act);
315
    mPrevButton.setLayoutParams(backParams);
345
    mPrevButton.setLayoutParams(params);
316 346
    mPrevButton.setPadding(padding,0,padding,0);
317 347
    mPrevButton.setImageResource(R.drawable.cube_back);
318 348

  
......
329 359

  
330 360
///////////////////////////////////////////////////////////////////////////////////////////////////
331 361

  
332
  private void setupObjectWindow(final RubikActivity act, final float scale)
362
  private void setupObjectWindow(final RubikActivity act, final float width)
333 363
    {
334 364
    LayoutInflater layoutInflater = (LayoutInflater)act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
335 365
    final View layout = layoutInflater.inflate(R.layout.popup_objects, null);
......
338 368
    mObjectPopup = new PopupWindow(act);
339 369
    mObjectPopup.setContentView(layout);
340 370
    mObjectPopup.setFocusable(true);
341
    int margin = (int)(5*scale + 0.5f);
371
    int margin = (int)(width*RubikActivity.PADDING);
342 372

  
343 373
    BitmapDrawable bd = (BitmapDrawable) act.getResources().getDrawable(R.drawable.cube2);
344 374
    int cubeWidth  = bd.getIntrinsicWidth();
......
388 418

  
389 419
///////////////////////////////////////////////////////////////////////////////////////////////////
390 420

  
391
  private void setupMenuWindow(final RubikActivity act, final float scale, final float width)
421
  private void setupMenuWindow(final RubikActivity act, final float width)
392 422
    {
393 423
    LayoutInflater layoutInflater = (LayoutInflater)act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
394 424
    final View layout = layoutInflater.inflate(R.layout.popup_objects, null);
......
397 427
    mMenuPopup = new PopupWindow(act);
398 428
    mMenuPopup.setContentView(layout);
399 429
    mMenuPopup.setFocusable(true);
400
    int margin = (int)(3*scale + 0.5f);
401
    int padding= (int)(7*scale + 0.5f);
430
    int margin  = (int)(width*RubikActivity.MARGIN);
431
    int padding = (int)(width*RubikActivity.PADDING);
402 432

  
403
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams( (int)width/2 - 2*padding, (int)mMenuItemSize);
404
    p.setMargins(margin, margin/2, margin, margin/2);
433
    LinearLayout.LayoutParams p0 = new LinearLayout.LayoutParams( (int)width/2 - 2*padding, (int)mMenuItemSize);
434
    p0.setMargins(margin, 0, margin, margin);
435
    LinearLayout.LayoutParams p1 = new LinearLayout.LayoutParams( (int)width/2 - 2*padding, (int)mMenuItemSize);
436
    p1.setMargins(margin, margin, margin, margin);
405 437

  
406 438
    for(int i=0; i<NUM_BUTTONS; i++)
407 439
      {
408 440
      final int but = i;
409 441
      Button button = new Button(act);
410
      button.setLayoutParams(p);
442
      button.setLayoutParams(i==0 ? p1:p0);
411 443
      button.setText(BUTTON_LABELS[i]);
412 444
      button.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize);
413 445

  
......
424 456
      mMenuLayout.addView(button);
425 457
      }
426 458

  
427
    mMenuLayoutHeight= (int)(NUM_BUTTONS*(mMenuItemSize+margin));
459
    mMenuLayoutHeight= (int)(margin + NUM_BUTTONS*(mMenuItemSize+margin));
428 460
    }
429 461

  
430 462
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff