|
|
@ -4,6 +4,7 @@ import android.content.Context; |
|
|
|
import android.content.Intent; |
|
|
|
import android.content.pm.ApplicationInfo; |
|
|
|
import android.graphics.Paint; |
|
|
|
import android.graphics.Rect; |
|
|
|
import android.os.Bundle; |
|
|
|
import android.support.annotation.NonNull; |
|
|
|
import android.support.annotation.Nullable; |
|
|
@ -14,12 +15,15 @@ import android.support.transition.ChangeBounds; |
|
|
|
import android.support.transition.Transition; |
|
|
|
import android.support.transition.TransitionListenerAdapter; |
|
|
|
import android.support.transition.TransitionManager; |
|
|
|
import android.support.v4.view.GestureDetectorCompat; |
|
|
|
import android.support.v4.view.ViewCompat; |
|
|
|
import android.support.v4.view.ViewPropertyAnimatorListenerAdapter; |
|
|
|
import android.support.v7.widget.RecyclerView; |
|
|
|
import android.support.v7.widget.StaggeredGridLayoutManager; |
|
|
|
import android.text.Editable; |
|
|
|
import android.view.GestureDetector; |
|
|
|
import android.view.KeyEvent; |
|
|
|
import android.view.MotionEvent; |
|
|
|
import android.view.View; |
|
|
|
import android.view.animation.AccelerateDecelerateInterpolator; |
|
|
|
import android.view.animation.AnticipateOvershootInterpolator; |
|
|
@ -113,6 +117,12 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
@BindView(R.id.countrySelectionSpinner) |
|
|
|
View countrySelectionSpinner; |
|
|
|
|
|
|
|
@BindView(R.id.receiveMoneyViewContainer) |
|
|
|
View receiveMoneyViewContainer; |
|
|
|
|
|
|
|
@BindView(R.id.sendMoneyViewContainer) |
|
|
|
View sendMoneyViewContainer; |
|
|
|
|
|
|
|
|
|
|
|
LanguageViewTransitionManager languageViewTransitionManager; |
|
|
|
|
|
|
@ -131,6 +141,8 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
|
|
|
|
private SendAmountTextWatcher sendMoneyTextWatcher; |
|
|
|
private ReceiveAmountTextWatcher receiveMoneyTextWatcher; |
|
|
|
private GestureDetectorCompat gestureDetector; |
|
|
|
private AmountChangeAndFocusOutDetector myViewGestureDetector; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@ -161,6 +173,9 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
initPayoutModeRV(); |
|
|
|
sendMoneyTextWatcher = new SendAmountTextWatcher(sendAmountEdTxt); |
|
|
|
receiveMoneyTextWatcher = new ReceiveAmountTextWatcher(receiveAmountEdTxt); |
|
|
|
myViewGestureDetector = new AmountChangeAndFocusOutDetector(); |
|
|
|
gestureDetector = new GestureDetectorCompat(this, myViewGestureDetector); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
@ -230,6 +245,12 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean dispatchTouchEvent(MotionEvent ev) { |
|
|
|
gestureDetector.onTouchEvent(ev); |
|
|
|
return super.dispatchTouchEvent(ev); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onBackPressed() { |
|
|
|
if (languageViewTransitionManager.isAnimationRunning()) |
|
|
@ -431,6 +452,8 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
private ConstraintSet mainViewConstraintSet; |
|
|
|
private ConstraintSet preLoadingConstraintSet; |
|
|
|
|
|
|
|
private boolean isExrateViewVisible; |
|
|
|
|
|
|
|
LanguageViewTransitionManager(Context context) { |
|
|
|
isAnimationOnProgress = false; |
|
|
|
this.context = context; |
|
|
@ -449,11 +472,14 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
accelerateDecelerateInterpolator = new AccelerateDecelerateInterpolator(); |
|
|
|
textViewPaintFlags = selectedLanguageText.getPaintFlags(); |
|
|
|
|
|
|
|
isExrateViewVisible = false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void showLanguageView(Runnable onAnimationCompleteCallback) { |
|
|
|
hideKeyBoard(); |
|
|
|
isExrateViewVisible = false; |
|
|
|
ChangeBounds transition = new ChangeBounds(); |
|
|
|
transition.setPathMotion(new ArcMotion()); |
|
|
|
transition.setInterpolator(anticipateOvershootInterpolator); |
|
|
@ -537,6 +563,7 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
public void onTransitionEnd(@NonNull Transition transition) { |
|
|
|
super.onTransitionEnd(transition); |
|
|
|
isAnimationOnProgress = false; |
|
|
|
isExrateViewVisible = true; |
|
|
|
userNavigatedToLanguageView = false; |
|
|
|
if (onAnimationCompleteCallback != null) |
|
|
|
onAnimationCompleteCallback.run(); |
|
|
@ -557,6 +584,7 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
@Override |
|
|
|
public void onTransitionEnd(@NonNull Transition transition) { |
|
|
|
super.onTransitionEnd(transition); |
|
|
|
isExrateViewVisible = true; |
|
|
|
isAnimationOnProgress = false; |
|
|
|
userNavigatedToLanguageView = false; |
|
|
|
if (onAnimationCompleteCallback != null) |
|
|
@ -577,7 +605,9 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
return this.userNavigatedToLanguageView; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public boolean isExrateViewVisible() { |
|
|
|
return isExrateViewVisible; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -600,6 +630,7 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
@Override |
|
|
|
public void afterTextChanged(Editable s) { |
|
|
|
super.afterTextChanged(s); |
|
|
|
presenter.setCalcByPayoutAmount(false); |
|
|
|
presenter.setCAmount(s.toString()); |
|
|
|
} |
|
|
|
} |
|
|
@ -623,10 +654,64 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener, |
|
|
|
@Override |
|
|
|
public void afterTextChanged(Editable s) { |
|
|
|
super.afterTextChanged(s); |
|
|
|
presenter.setCalcByPayoutAmount(true); |
|
|
|
presenter.setPAmount(s.toString()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private class AmountChangeAndFocusOutDetector extends GestureDetector.SimpleOnGestureListener { |
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean onSingleTapUp(MotionEvent e) { |
|
|
|
if (!languageViewTransitionManager.isExrateViewVisible()) |
|
|
|
return super.onSingleTapUp(e); |
|
|
|
if (e.getAction() == MotionEvent.ACTION_UP) { |
|
|
|
if (hasValidOutsideAmountWidgetTouch(e.getX(), e.getY())) { |
|
|
|
presenter.calcExrate(); |
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
return super.onSingleTapUp(e); |
|
|
|
} |
|
|
|
|
|
|
|
private boolean hasValidOutsideAmountWidgetTouch(float x, float y) { |
|
|
|
|
|
|
|
int posX = (int) x; |
|
|
|
int posY = (int) y; |
|
|
|
int[] sendMoneyLeftAndTopCoordinates = new int[2]; |
|
|
|
|
|
|
|
int[] receiveMoneyLeftAndTopCoordinates = new int[2]; |
|
|
|
|
|
|
|
int[] backButtonLeftAndTopCoordinates = new int[2]; |
|
|
|
|
|
|
|
sendMoneyViewContainer.getLocationOnScreen(sendMoneyLeftAndTopCoordinates); |
|
|
|
receiveMoneyViewContainer.getLocationOnScreen(receiveMoneyLeftAndTopCoordinates); |
|
|
|
iv_back.getLocationOnScreen(backButtonLeftAndTopCoordinates); |
|
|
|
|
|
|
|
Rect sendMoneyBoundRect = new Rect(sendMoneyLeftAndTopCoordinates[0], sendMoneyLeftAndTopCoordinates[1], |
|
|
|
sendMoneyLeftAndTopCoordinates[0] + sendMoneyViewContainer.getMeasuredWidth(), |
|
|
|
sendMoneyLeftAndTopCoordinates[1] + sendMoneyViewContainer.getMeasuredHeight()); |
|
|
|
|
|
|
|
Rect receiveMoneyBoundRect = new Rect(receiveMoneyLeftAndTopCoordinates[0], receiveMoneyLeftAndTopCoordinates[1], |
|
|
|
receiveMoneyLeftAndTopCoordinates[0] + receiveMoneyViewContainer.getMeasuredWidth(), |
|
|
|
receiveMoneyLeftAndTopCoordinates[1] + receiveMoneyViewContainer.getMeasuredHeight()); |
|
|
|
|
|
|
|
Rect backButtonBoundRect = new Rect(backButtonLeftAndTopCoordinates[0], backButtonLeftAndTopCoordinates[1], |
|
|
|
backButtonLeftAndTopCoordinates[0] + iv_back.getMeasuredWidth(), |
|
|
|
backButtonLeftAndTopCoordinates[1] + iv_back.getMeasuredHeight()); |
|
|
|
|
|
|
|
|
|
|
|
return (receiveAmountEdTxt.hasFocus() || sendAmountEdTxt.hasFocus()) |
|
|
|
&& !sendMoneyBoundRect.contains(posX, posY) |
|
|
|
&& !receiveMoneyBoundRect.contains(posX, posY) |
|
|
|
&& !backButtonBoundRect.contains(posX, posY); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static { |
|
|
|
System.loadLibrary("antidebugger"); |
|
|
|
} |
|
|
|