Browse Source

Finger print auth added in setting and payout mode layout revamped

master
Preyea Regmi 5 years ago
parent
commit
147dd39554
  1. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java
  2. 5
      app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/payoutmode/PayoutModeSendMoneyFragment.java
  3. 172
      app/src/main/java/com/gmeremit/online/gmeremittance_native/settings/view/FingerPrintAuthPromptDialog.java
  4. 25
      app/src/main/java/com/gmeremit/online/gmeremittance_native/settings/view/SettingsView.java
  5. 32
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/adapter/ViewPagerAVDSplashAdapter.java
  6. 23
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/SplashScreen.java
  7. 17
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/avdfrags/SplashAVD1Fragment.java
  8. 17
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/avdfrags/SplashAVD2Fragment.java
  9. 16
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/avdfrags/SplashAVD3Fragment.java
  10. 91
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/avdfrags/SplashAnimatedViewPagerFragment.java
  11. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptActivity.java
  12. 54
      app/src/main/res/layout/dialog_fingerprint_auth_prompt.xml
  13. 44
      app/src/main/res/layout/fragment_splash_avd_viewpager.xml
  14. 18
      app/src/main/res/layout/send_paymentmode_rv_viewholder.xml
  15. 1
      app/src/main/res/values/strings.xml

2
app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java

@ -120,7 +120,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
@Override
protected void onCreate(Bundle savedInstanceState) {
enableActivityToTakeScreenShot(false);
enableActivityToTakeScreenShot(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_v2);
ButterKnife.bind(this);

5
app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/payoutmode/PayoutModeSendMoneyFragment.java

@ -170,8 +170,9 @@ public class PayoutModeSendMoneyFragment extends BaseFragment implements SendMon
@Override
public void onPayoutModeSelected(PayoutMode selectedPayoutMode) {
this.selectedPayoutMode = selectedPayoutMode;
hideKeyBoard();
this.selectedPayoutMode = selectedPayoutMode;
showBankSelectView(this.selectedPayoutMode.getBankrequired().equalsIgnoreCase(Constants.TRUE_STRING));
@ -329,10 +330,10 @@ public class PayoutModeSendMoneyFragment extends BaseFragment implements SendMon
this.selectedBranch,
this.ed_account.getText().toString());
if (errorMessage == null) {
hideKeyBoard();
ed_account.clearFocus();
ed_bank.clearFocus();
ed_branch.clearFocus();
hideKeyBoard();
compositeDisposable.add(
((SendMoneyActionListener) getActivity()).getPresenter().validateAccountIfRequired().subscribeWith(new AccountValidationObserver())
);

172
app/src/main/java/com/gmeremit/online/gmeremittance_native/settings/view/FingerPrintAuthPromptDialog.java

@ -1,45 +1,201 @@
package com.gmeremit.online.gmeremittance_native.settings.view;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.graphics.drawable.AnimatedVectorDrawableCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.customwidgets.GenericTextListingDialog;
import com.gmeremit.online.gmeremittance_native.customwidgets.LineDividerItemDecoration;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionPasswordPromptActivity;
import com.gmeremit.online.gmeremittance_native.utils.security.SecurityUtils;
import com.mtramin.rxfingerprint.data.FingerprintAuthenticationResult;
import com.mtramin.rxfingerprint.data.FingerprintDecryptionResult;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.observers.DisposableObserver;
import io.reactivex.schedulers.Schedulers;
public class FingerPrintAuthPromptDialog extends android.support.v4.app.DialogFragment {
ImageView fingerprintScannerImgView;
View cancelView;
private AnimatedVectorDrawable fingerPrintAVD;
private AnimatedVectorDrawableCompat fingerPrintAVDCompat;
private FingerprintAuthListener listener;
private Disposable fingerPrintReaderSubs;
private boolean userAction;
private Window window;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_fingerprint_auth_prompt, null);
fingerprintScannerImgView=view.findViewById(R.id.fingerprintScannerImgView);
cancelView=view.findViewById(R.id.btnCancel);
builder.setView(view);
initialize();
Dialog dialog= builder.create();
try {
this.window = dialog.getWindow();
window.setBackgroundDrawableResource(R.drawable.ic_rounded_white);
} catch (NullPointerException e) {
initialize();
return builder.create();
}
return dialog;
}
private void initialize() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
fingerPrintAVD = (AnimatedVectorDrawable) ContextCompat.getDrawable(getActivity(), R.drawable.avd_fingerprint_off_to_on);
} else {
fingerPrintAVDCompat = (AnimatedVectorDrawableCompat) ContextCompat.getDrawable(getActivity(), R.drawable.avd_fingerprint_off_to_on);
}
}
public void setFingerprintAuthListener(boolean userAction,FingerprintAuthListener listener)
{
this.userAction=userAction;
this.listener=listener;
}
@Override
public void onStart() {
super.onStart();
cancelView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
if (fingerPrintReaderSubs==null||fingerPrintReaderSubs.isDisposed())
fingerPrintReaderSubs = startObservingFingerPrintScanner();
}
@Override
public void onStop() {
super.onStop();
cancelView.setOnClickListener(null);
if (fingerPrintReaderSubs != null && !fingerPrintReaderSubs.isDisposed())
fingerPrintReaderSubs.dispose();
}
@Override
public void onResume() {
super.onResume();
animateFingerPrintAppearAnimationIfRequired(true);
}
Window window = getDialog().getWindow();
if (window != null) {
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
window.setBackgroundDrawableResource(R.drawable.ic_rounded_grey_bg_with_inset);
@Override
public void onPause() {
super.onPause();
animateFingerPrintAppearAnimationIfRequired(false);
}
@SuppressLint("NewApi")
private void animateFingerPrintAppearAnimationIfRequired(boolean action) {
if (action) {
new Handler().postDelayed(() -> {
if (fingerPrintAVD != null && !fingerPrintAVD.isRunning()) {
fingerprintScannerImgView.setImageDrawable(fingerPrintAVD);
fingerPrintAVD.start();
} else if (fingerPrintAVDCompat != null && !fingerPrintAVDCompat.isRunning()) {
fingerprintScannerImgView.setImageDrawable(fingerPrintAVDCompat);
fingerPrintAVDCompat.start();
}
}, 200 );
} else {
new Handler().postDelayed(() -> {
fingerprintScannerImgView.setImageDrawable(null);
}, 200);
}
}
private Disposable startObservingFingerPrintScanner() {
return SecurityUtils.authenticateFingerPrint(getActivity())
.subscribeOn(Schedulers.io())
.flatMap(authentication -> {
switch (authentication.getResult()) {
case FAILED:
return io.reactivex.Observable.error(new SecurityUtils.FailedFingerPrintException(getString(R.string.fingerprint_not_recognized)));
case HELP:
return io.reactivex.Observable.error(new SecurityUtils.SensorNotReadyException(authentication.getMessage()));
case AUTHENTICATED:
return Observable.just(authentication);
default:
return io.reactivex.Observable.error(new Throwable(authentication.getMessage()));
}
})
.observeOn(AndroidSchedulers.mainThread())
.retryWhen(errors->errors.flatMap(
error->{
if(error instanceof SecurityUtils.FailedFingerPrintException || error instanceof SecurityUtils.SensorNotReadyException)
{
showToastMessage(error.getMessage());
return Observable.timer(100,TimeUnit.MILLISECONDS);
}
return Observable.error(error);
}
))
.subscribeWith(new FingerPrintScannerObserver());
}
private void showToastMessage(String message) {
Toast toast=Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT);
TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
if( v != null) v.setGravity(Gravity.CENTER);
toast.show();
}
class FingerPrintScannerObserver extends DisposableObserver<FingerprintAuthenticationResult> {
@Override
public void onNext(FingerprintAuthenticationResult fingerprintAuthenticationResult) {
if(listener!=null)
listener.onFingerPrintAuthenticated(userAction);
}
@Override
public void onError(Throwable e) {
showToastMessage(e.getMessage());
}
@Override
public void onComplete() {
}
}
public interface FingerprintAuthListener
{
void onFingerPrintAuthenticated(boolean userAction);
}
}

25
app/src/main/java/com/gmeremit/online/gmeremittance_native/settings/view/SettingsView.java

@ -181,7 +181,30 @@ public class SettingsView extends BaseActivity implements CompoundButton.OnCheck
{
case R.id.view_fingerprint:
{
GmeApplication.getStorage().edit().putBoolean(PrefKeys.APP_FINGER_PRINT_ENABLED,isChecked).apply();
view_fingerprint.setOnCheckedChangeListener(null);
view_fingerprint.setChecked(!isChecked);
view_fingerprint.setOnCheckedChangeListener(this);
FingerPrintAuthPromptDialog fingerPrintAuthPromptDialog=new FingerPrintAuthPromptDialog();
fingerPrintAuthPromptDialog.setFingerprintAuthListener(isChecked, new FingerPrintAuthPromptDialog.FingerprintAuthListener() {
@Override
public void onFingerPrintAuthenticated(boolean userAction) {
GmeApplication.getStorage().edit().putBoolean(PrefKeys.APP_FINGER_PRINT_ENABLED,userAction).apply();
view_fingerprint.setOnCheckedChangeListener(null);
view_fingerprint.setChecked(userAction);
view_fingerprint.setOnCheckedChangeListener(SettingsView.this);
if(fingerPrintAuthPromptDialog!=null)
fingerPrintAuthPromptDialog.dismiss();
}
});
if(!fingerPrintAuthPromptDialog.isAdded())
fingerPrintAuthPromptDialog.show(getSupportFragmentManager(), "FingerPrintScannerPromptDialog");
}
}
}

32
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/adapter/ViewPagerAVDSplashAdapter.java

@ -0,0 +1,32 @@
package com.gmeremit.online.gmeremittance_native.splash_screen.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class ViewPagerAVDSplashAdapter extends FragmentPagerAdapter {
private List<Fragment> fraglist;
public ViewPagerAVDSplashAdapter(FragmentManager fm) {
super(fm);
fraglist = new ArrayList<>();
}
@Override
public Fragment getItem(int i) {
return fraglist.get(i);
}
@Override
public int getCount() {
return fraglist.size();
}
public void addFragments(List<Fragment> data)
{
fraglist=data;
}
}

23
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/SplashScreen.java

@ -14,6 +14,7 @@ import android.support.transition.ChangeBounds;
import android.support.transition.Transition;
import android.support.transition.TransitionListenerAdapter;
import android.support.transition.TransitionManager;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewCompat;
@ -38,10 +39,15 @@ import com.gmeremit.online.gmeremittance_native.homeV2.view.HomeActivityV2;
import com.gmeremit.online.gmeremittance_native.loginV2.view.LoginV2Activity;
import com.gmeremit.online.gmeremittance_native.registerV2.view.RegisterV2Activity;
import com.gmeremit.online.gmeremittance_native.splash_screen.adapter.LanguageSelectionRVAdapter;
import com.gmeremit.online.gmeremittance_native.splash_screen.adapter.ViewPagerAVDSplashAdapter;
import com.gmeremit.online.gmeremittance_native.splash_screen.model.LanguageModel;
import com.gmeremit.online.gmeremittance_native.splash_screen.presenter.SplashScreenPresenter;
import com.gmeremit.online.gmeremittance_native.splash_screen.presenter.SplashScreenPresenterInterface;
import com.gmeremit.online.gmeremittance_native.splash_screen.view.avdfrags.SplashAVD1Fragment;
import com.gmeremit.online.gmeremittance_native.splash_screen.view.avdfrags.SplashAVD2Fragment;
import com.gmeremit.online.gmeremittance_native.splash_screen.view.avdfrags.SplashAVD3Fragment;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
@ -87,6 +93,8 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener,
private SplashScreenPresenterInterface presenter;
private ArrayList<Fragment> fragmentList;
ViewPager.OnPageChangeListener viewPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
@ -132,9 +140,12 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener,
addBottomDots(0);
// viewPagerAdapter = new ViewPagerAVDSplashAdapter(getSupportFragmentManager());
viewPagerAdapter = new ViewPagerAdapter();
// setupViewPagerAdapter();
view_pager.setAdapter(viewPagerAdapter);
view_pager.addOnPageChangeListener(viewPageChangeListener);
view_pager.setOffscreenPageLimit(3);
languageSelectionRVAdapter = new LanguageSelectionRVAdapter();
languageSelectionRVAdapter.setLanguageSelectionListener(this);
@ -142,6 +153,16 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener,
}
private void setupViewPagerAdapter() {
// fragmentList = new ArrayList<>();
//
// fragmentList.add(new SplashAVD1Fragment());
// fragmentList.add(new SplashAVD2Fragment());
// fragmentList.add(new SplashAVD3Fragment());
//
// viewPagerAdapter.addFragments(fragmentList);
}
private void addBottomDots(int currentPage) {
dots = new TextView[layouts.length];
@ -427,7 +448,7 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener,
private void startAntiDebugger() {
boolean isDebuggable = (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE));
if (isDebuggable&&false)
if (isDebuggable && false)
antiDebugCheck();
}

17
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/avdfrags/SplashAVD1Fragment.java

@ -0,0 +1,17 @@
package com.gmeremit.online.gmeremittance_native.splash_screen.view.avdfrags;
import com.gmeremit.online.gmeremittance_native.R;
public class SplashAVD1Fragment extends SplashAnimatedViewPagerFragment {
@Override
public int setupAVD() {
return R.drawable.avd_fingerprint_off_to_on;
}
@Override
public String setupInfoText() {
return "This is first screen";
}
}

17
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/avdfrags/SplashAVD2Fragment.java

@ -0,0 +1,17 @@
package com.gmeremit.online.gmeremittance_native.splash_screen.view.avdfrags;
import com.gmeremit.online.gmeremittance_native.R;
public class SplashAVD2Fragment extends SplashAnimatedViewPagerFragment {
@Override
public int setupAVD() {
return R.drawable.avd_fingerprint_off_to_on;
}
@Override
public String setupInfoText() {
return "This is second screen";
}
}

16
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/avdfrags/SplashAVD3Fragment.java

@ -0,0 +1,16 @@
package com.gmeremit.online.gmeremittance_native.splash_screen.view.avdfrags;
import com.gmeremit.online.gmeremittance_native.R;
public class SplashAVD3Fragment extends SplashAnimatedViewPagerFragment {
@Override
public int setupAVD() {
return R.drawable.avd_fingerprint_off_to_on;
}
@Override
public String setupInfoText() {
return "This is third screen";
}
}

91
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/avdfrags/SplashAnimatedViewPagerFragment.java

@ -0,0 +1,91 @@
package com.gmeremit.online.gmeremittance_native.splash_screen.view.avdfrags;
import android.annotation.SuppressLint;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.DrawableRes;
import android.support.annotation.Nullable;
import android.support.graphics.drawable.AnimatedVectorDrawableCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.BaseFragment;
import butterknife.BindView;
import butterknife.ButterKnife;
public abstract class SplashAnimatedViewPagerFragment extends BaseFragment {
public abstract @DrawableRes
int setupAVD();
public abstract String setupInfoText();
private @DrawableRes
int avdResId;
@BindView(R.id.gmeTextView2)
TextView infoText;
@BindView(R.id.avdImage)
ImageView avdImageView;
private AnimatedVectorDrawable fingerPrintAVD;
private AnimatedVectorDrawableCompat fingerPrintAVDCompat;
private boolean isAnimationPlayed = false;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_splash_avd_viewpager, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
init();
performDefaultAction(savedInstanceState);
}
private void performDefaultAction(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
fingerPrintAVD = (AnimatedVectorDrawable) ContextCompat.getDrawable(getActivity(), avdResId);
} else {
fingerPrintAVDCompat = (AnimatedVectorDrawableCompat) ContextCompat.getDrawable(getActivity(), avdResId);
}
infoText.setText(setupInfoText());
}
private void init() {
avdResId = setupAVD();
}
@SuppressLint("NewApi")
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
Log.d("SplashAVD",""+ isVisibleToUser);
if (isVisibleToUser && !isAnimationPlayed && enableAnimationOnThisOS()) {
if (fingerPrintAVD != null && !fingerPrintAVD.isRunning()) {
avdImageView.setImageDrawable(fingerPrintAVD);
fingerPrintAVD.start();
} else if (fingerPrintAVDCompat != null && !fingerPrintAVDCompat.isRunning()) {
avdImageView.setImageDrawable(fingerPrintAVDCompat);
fingerPrintAVDCompat.start();
}
isAnimationPlayed=true;
}
}
private boolean enableAnimationOnThisOS() {
return true;
}
}

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptActivity.java

@ -104,13 +104,13 @@ public class TransactionPasswordPromptActivity extends BaseActivity implements S
private CountDownTimer countDownTimer;
private AnimatedVectorDrawable fingerPrintAVD;
private AnimatedVectorDrawableCompat fingerPrintAVDCompat;
private Disposable fingerPrintReaderSubs;
private Disposable fingerPrintReaderSubs;
String TAG = "FingerPrintObserver";
@Override
protected void onCreate(Bundle savedInstanceState) {
enableActivityToTakeScreenShot(false);
enableActivityToTakeScreenShot(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_transaction_password_prompt);
ButterKnife.bind(this);

54
app/src/main/res/layout/dialog_fingerprint_auth_prompt.xml

@ -1,6 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/dialog_round"
android:paddingTop="28dp">
</android.support.constraint.ConstraintLayout>
<ImageView
android:id="@+id/fingerprintScannerImgView"
android:layout_width="54dp"
android:layout_height="54dp"
android:layout_gravity="center"
/>
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/txt_dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="20dp"
android:layout_marginTop="25dp"
android:text="@string/important_text"
android:textColor="@color/cs_red"
android:textSize="18sp"
android:textStyle="bold" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:layout_width="280dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="24dp"
android:gravity="center"
android:text="@string/touch_fingerprint_text"
android:textSize="14sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#CDCED2" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/btnCancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="17dp"
android:layout_marginTop="14dp"
android:gravity="center"
android:text="@string/cancel_text"
android:textColor="@color/cs_red"
android:textSize="20sp" />
</LinearLayout>

44
app/src/main/res/layout/fragment_splash_avd_viewpager.xml

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relativeLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<FrameLayout
android:id="@+id/imageView5"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:background="@drawable/ic_send_money"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.13" >
<ImageView
android:id="@+id/avdImage"
android:layout_width="150dp"
android:layout_height="150dp" />
</FrameLayout>
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/gmeTextView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:layout_marginTop="12dp"
android:gravity="center"
android:text="@string/hassle_free_transfer_text"
android:textColor="@color/white"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView5" />
</android.support.constraint.ConstraintLayout>

18
app/src/main/res/layout/send_paymentmode_rv_viewholder.xml

@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="140dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:padding="10dp"
android:background="@drawable/ic_rounded_white">
<LinearLayout
android:orientation="vertical"
@ -15,21 +14,22 @@
<ImageView
android:layout_gravity="center"
android:id="@+id/paymentModeLogo"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_width="60dp"
android:layout_height="60dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_home_delivery" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:paddingTop="10dp"
android:paddingBottom="6dp"
android:layout_gravity="center_horizontal"
android:id="@+id/paymentModeTitleTxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:maxWidth="100dp"
android:gravity="center"
android:layout_height="wrap_content"
android:singleLine="false"
android:maxLines="2"
android:paddingStart="3dp"
android:paddingEnd="3dp"
android:text="Home Delivery"
android:textColor="@color/darkgray"
android:textSize="15sp"

1
app/src/main/res/values/strings.xml

@ -468,6 +468,7 @@
<string name="select_your_bank">Select your bank</string>
<string name="enter_bank_ac_no">Enter your bank account number</string>
<string name="select_language">Select language</string>
<string name="touch_fingerprint_text">Please place your finger on the fingerprint sensor to continue.</string>
</resources>
Loading…
Cancel
Save