42
42
import de .hdodenhof .circleimageview .CircleImageView ;
43
43
44
44
45
+
45
46
public class OrderDialogFragment extends BottomSheetDialogFragment {
46
47
public static final String ID_SIZE_SUFFIX = "txt_size" ;
47
48
public static final String ID_COLOR_SUFFIX = "img_color" ;
@@ -110,13 +111,11 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
110
111
binding .imgProduct .setImageDrawable (createProductImageDrawable (getProduct ()));
111
112
112
113
initOrderStepOneView (binding .layoutStep1 );
113
-
114
-
115
114
}
116
115
117
- private void transitionToSecondStep () {
116
+ private void showDeliveryForm () {
118
117
final LayoutFormOrderStep2Binding step2Binding = LayoutFormOrderStep2Binding .inflate (
119
- LayoutInflater .from (getContext ()), binding .formContainer , false );//
118
+ LayoutInflater .from (getContext ()), binding .formContainer , false );
120
119
121
120
final Scene deliveryFormScene = new Scene (binding .formContainer ,
122
121
((ViewGroup ) step2Binding .getRoot ()));
@@ -143,7 +142,7 @@ private void transitionSelectedView(View v) {
143
142
v .setSelected (true );
144
143
145
144
// Create the cloned view from the selected view at the same position
146
- final View clonedView = createClonedView (v );
145
+ final View clonedView = createSelectionView (v );
147
146
148
147
// Add the cloned view to the constraint layout
149
148
if (clonedViews .size () < 2 ) {
@@ -161,18 +160,17 @@ private void startCloneAnimation(View clonedView, View targetView) {
161
160
TransitionManager .beginDelayedTransition (
162
161
(ViewGroup ) binding .getRoot (), selectedViewTransition );
163
162
164
- ConstraintLayout .LayoutParams fakeEndParams = createFakeEndParams (clonedView , targetView );
165
- clonedView .setLayoutParams (fakeEndParams ); // Fire the transition
163
+ clonedView .setLayoutParams (SelectedParamsFactory .endParams (clonedView , targetView )); // Fire the transition
166
164
}
167
165
});
168
166
}
169
167
170
- private View createClonedView (View v ) {
168
+ private View createSelectionView (View v ) {
171
169
final String resourceName = getResources ().getResourceEntryName (v .getId ());
172
170
173
171
return (resourceName .startsWith (ID_COLOR_SUFFIX ))
174
- ? createFakeSelectedColorView ((ImageView ) v )
175
- : createFakeSelectedTextView (v );
172
+ ? createSelectedColorView ((ImageView ) v )
173
+ : createSelectedTextView (v );
176
174
}
177
175
178
176
private View getTargetView (View v ) {
@@ -201,7 +199,7 @@ private void initOrderStepOneView(LayoutFormOrderStep1Binding layoutStep1) {
201
199
202
200
clonedViews .clear ();
203
201
204
- transitionToSecondStep ();
202
+ showDeliveryForm ();
205
203
});
206
204
207
205
layoutStep1 .setListener (new Step1Listener () {
@@ -247,61 +245,24 @@ public void onTimeSelected(View v) {
247
245
});
248
246
}
249
247
250
- private View createFakeSelectedTextView (View v ) {
248
+ private View createSelectedTextView (View v ) {
251
249
final TextView fakeSelectedTextView = new TextView (
252
250
getContext (), null , R .attr .selectedTextStyle );
253
251
254
252
fakeSelectedTextView .setText ("This is a test" ); // TODO, set the proper text
255
- fakeSelectedTextView .setLayoutParams (createNewViewLayoutParams (v ));
253
+ fakeSelectedTextView .setLayoutParams (SelectedParamsFactory . startTextParams (v ));
256
254
return fakeSelectedTextView ;
257
255
}
258
256
259
- private View createFakeSelectedColorView (ImageView imageView ) {
257
+ private View createSelectedColorView (ImageView selectedView ) {
260
258
final ImageView fakeImageView = new CircleImageView (
261
259
getContext (), null , R .attr .colorStyle );
262
260
263
- fakeImageView .setImageDrawable (imageView .getDrawable ());
264
- fakeImageView .setLayoutParams (createCloneLayoutParams ( imageView ));
261
+ fakeImageView .setImageDrawable (selectedView .getDrawable ());
262
+ fakeImageView .setLayoutParams (SelectedParamsFactory . startColorParams ( selectedView ));
265
263
return fakeImageView ;
266
264
}
267
265
268
- private ConstraintLayout .LayoutParams createFakeEndParams (View v , View targetView ) {
269
- final ConstraintLayout .LayoutParams layoutParams =
270
- (ConstraintLayout .LayoutParams ) v .getLayoutParams ();
271
-
272
- final int marginLeft = getContext ().getResources ()
273
- .getDimensionPixelOffset (R .dimen .spacing_medium );
274
-
275
- layoutParams .setMargins (marginLeft , 0 , 0 , 0 );
276
- layoutParams .topToTop = targetView .getId ();
277
- layoutParams .startToEnd = targetView .getId ();
278
- layoutParams .bottomToBottom = targetView .getId ();
279
-
280
- return layoutParams ;
281
- }
282
-
283
- private ConstraintLayout .LayoutParams createCloneLayoutParams (View v ) {
284
- final ConstraintLayout .LayoutParams layoutParams =
285
- new ConstraintLayout .LayoutParams (v .getWidth (), v .getHeight ());
286
-
287
- layoutParams .topToTop = binding .formContainer .getId ();
288
- layoutParams .leftToLeft = binding .formContainer .getId ();
289
- layoutParams .setMargins ((int ) v .getX (), (int ) v .getY (), 0 , 0 );
290
- return layoutParams ;
291
- }
292
-
293
- private ConstraintLayout .LayoutParams createNewViewLayoutParams (View v ) {
294
- final ConstraintLayout .LayoutParams layoutParams =
295
- new ConstraintLayout .LayoutParams (
296
- ViewGroup .LayoutParams .WRAP_CONTENT ,
297
- ViewGroup .LayoutParams .WRAP_CONTENT );
298
-
299
- layoutParams .topToTop = binding .formContainer .getId ();
300
- layoutParams .leftToLeft = binding .formContainer .getId ();
301
- layoutParams .setMargins ((int ) v .getX (), (int ) v .getY (), 0 , 0 );
302
- return layoutParams ;
303
- }
304
-
305
266
private void changeToConfirmScene () {
306
267
final LayoutOrderConfirmationBinding confirmationBinding = LayoutOrderConfirmationBinding
307
268
.inflate (LayoutInflater .from (getContext ()), binding .mainContainer , false );
@@ -353,4 +314,48 @@ private Runnable onEnterConfirmScene(LayoutOrderConfirmationBinding confirmation
353
314
.start ();
354
315
};
355
316
}
317
+
318
+ private static class SelectedParamsFactory {
319
+ private static ConstraintLayout .LayoutParams startColorParams (View selectedView ) {
320
+ final int colorSize = selectedView .getContext ().getResources ()
321
+ .getDimensionPixelOffset (R .dimen .product_color_size );
322
+
323
+ final ConstraintLayout .LayoutParams layoutParams =
324
+ new ConstraintLayout .LayoutParams (colorSize , colorSize );
325
+
326
+ setStartState (selectedView , layoutParams );
327
+ return layoutParams ;
328
+ }
329
+
330
+ private static ConstraintLayout .LayoutParams startTextParams (View selectedView ) {
331
+ final ConstraintLayout .LayoutParams layoutParams =
332
+ new ConstraintLayout .LayoutParams (
333
+ ViewGroup .LayoutParams .WRAP_CONTENT ,
334
+ ViewGroup .LayoutParams .WRAP_CONTENT );
335
+
336
+ setStartState (selectedView , layoutParams );
337
+ return layoutParams ;
338
+ }
339
+
340
+ private static void setStartState (View selectedView , ConstraintLayout .LayoutParams layoutParams ) {
341
+ layoutParams .topToTop = ((ViewGroup ) selectedView .getParent ().getParent ()).getId ();
342
+ layoutParams .leftToLeft = ((ViewGroup ) selectedView .getParent ().getParent ()).getId ();
343
+ layoutParams .setMargins ((int ) selectedView .getX (), (int ) selectedView .getY (), 0 , 0 );
344
+ }
345
+
346
+ private static ConstraintLayout .LayoutParams endParams (View v , View targetView ) {
347
+ final ConstraintLayout .LayoutParams layoutParams =
348
+ (ConstraintLayout .LayoutParams ) v .getLayoutParams ();
349
+
350
+ final int marginLeft = v .getContext ().getResources ()
351
+ .getDimensionPixelOffset (R .dimen .spacing_medium );
352
+
353
+ layoutParams .setMargins (marginLeft , 0 , 0 , 0 );
354
+ layoutParams .topToTop = targetView .getId ();
355
+ layoutParams .startToEnd = targetView .getId ();
356
+ layoutParams .bottomToBottom = targetView .getId ();
357
+
358
+ return layoutParams ;
359
+ }
360
+ }
356
361
}
0 commit comments