Improve Send and Receive Transaction layouts to dynamically adjust to different screen sizes. Removed unnecessary SquaredImageView, the same effect can now be achieved with Android's ConstraintLayout.
parent
aec93ddb22
commit
96881f3292
|
@ -31,7 +31,6 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Spinner;
|
||||
|
@ -133,12 +132,8 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
|
|||
@BindView(R.id.viewCamera)
|
||||
View viewCamera;
|
||||
|
||||
/*
|
||||
* Flag to control when the camera is visible and when is hide
|
||||
* */
|
||||
private boolean cameraVisible = true;
|
||||
|
||||
Button btnScanQrCode;
|
||||
/* Flag to control when the camera is visible and when is hidden */
|
||||
private boolean cameraVisible = false;
|
||||
|
||||
private long cryptoNetAccountId;
|
||||
private CryptoNetAccount cryptoNetAccount;
|
||||
|
@ -233,41 +228,9 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
|
|||
|
||||
loadUserImage();
|
||||
|
||||
/*
|
||||
* Check for CAMERA permission
|
||||
* */
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
if (checkPermission()) {
|
||||
// Code for above or equal 23 API Oriented Device
|
||||
// Your Permission granted already .Do next code
|
||||
|
||||
/*
|
||||
* Init the camera
|
||||
* */
|
||||
try {
|
||||
beginScanQrCode();
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
} else {
|
||||
requestPermission(); // Code for permission
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
// Code for Below 23 API Oriented Device
|
||||
// Do next code
|
||||
|
||||
/*
|
||||
* Init the camera
|
||||
* */
|
||||
try {
|
||||
beginScanQrCode();
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/* Check for CAMERA permission */
|
||||
if (Build.VERSION.SDK_INT >= 23 && !checkCameraPermission())
|
||||
requestCameraPermission();
|
||||
|
||||
return builder.setView(view).create();
|
||||
}
|
||||
|
@ -325,38 +288,24 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
|
|||
}
|
||||
}
|
||||
|
||||
private void requestPermission() {
|
||||
private boolean checkCameraPermission() {
|
||||
int result = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA);
|
||||
return result == PackageManager.PERMISSION_GRANTED;
|
||||
}
|
||||
|
||||
private void requestCameraPermission() {
|
||||
|
||||
if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.CAMERA)) {
|
||||
Toast.makeText(getActivity(), getActivity().getString(R.string.permission_denied_camera), Toast.LENGTH_LONG).show();
|
||||
|
||||
/*
|
||||
* Disable the button of the camera visibility
|
||||
* */
|
||||
disableVisibilityCamera();
|
||||
/* Disable the button of the camera visibility */
|
||||
btnCloseCamera.setVisibility(View.INVISIBLE);
|
||||
|
||||
} else {
|
||||
requestPermissions(new String[] {android.Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);
|
||||
}
|
||||
}
|
||||
|
||||
private void disableVisibilityCamera(){
|
||||
|
||||
/*
|
||||
* Hide the button, the user can not modify the visibility
|
||||
* */
|
||||
btnCloseCamera.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
private boolean checkPermission() {
|
||||
int result = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA);
|
||||
if (result == PackageManager.PERMISSION_GRANTED) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
|
@ -374,15 +323,6 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
|
|||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Init the camera
|
||||
* */
|
||||
try {
|
||||
beginScanQrCode();
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
} else {
|
||||
Log.e("value", "Permission Denied, You cannot use the camera.");
|
||||
|
||||
|
@ -401,12 +341,6 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
|
|||
super.onResume();
|
||||
mScannerView.setResultHandler(this);
|
||||
mScannerView.startCamera();
|
||||
/*builder.setNeutralButton("Scan QR Code", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
beginScanQrCode();
|
||||
}
|
||||
});*/
|
||||
|
||||
// Force dialog fragment to use the full width of the screen
|
||||
Window dialogWindow = getDialog().getWindow();
|
||||
|
@ -475,67 +409,44 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
|
|||
|
||||
|
||||
@OnClick(R.id.fabCloseCamera)
|
||||
public void onClicCloseCamera(){
|
||||
mScannerView.stopCamera();
|
||||
|
||||
/*
|
||||
* Hide the camera or show it
|
||||
* */
|
||||
if(cameraVisible){
|
||||
public void onClickCloseCamera(){
|
||||
if(cameraVisible)
|
||||
hideCamera();
|
||||
}
|
||||
else{
|
||||
else
|
||||
showCamera();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Show the camera and hide the black background
|
||||
/**
|
||||
* Shows the camera and hide the black background
|
||||
* */
|
||||
private void showCamera(){
|
||||
|
||||
/*
|
||||
* Change visibilities of views
|
||||
* */
|
||||
/* Change visibilities of views */
|
||||
viewCamera.setVisibility(View.GONE);
|
||||
mScannerView.setVisibility(View.VISIBLE);
|
||||
|
||||
/*
|
||||
* Change icon
|
||||
* */
|
||||
/* Change icon */
|
||||
btnCloseCamera.setImageDrawable(getResources().getDrawable(R.drawable.ic_close));
|
||||
|
||||
/*
|
||||
* Reset variable
|
||||
* */
|
||||
/* Reset variable */
|
||||
cameraVisible = true;
|
||||
|
||||
/*
|
||||
* Star the camera again
|
||||
* */
|
||||
/* Star the camera again */
|
||||
beginScanQrCode();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Hide the camera and show the black background
|
||||
/**
|
||||
* Hides the camera and show the black background
|
||||
* */
|
||||
private void hideCamera(){
|
||||
|
||||
/*
|
||||
* Change visibilities of views
|
||||
* */
|
||||
/* Change visibilities of views */
|
||||
viewCamera.setVisibility(View.VISIBLE);
|
||||
mScannerView.setVisibility(View.INVISIBLE);
|
||||
|
||||
/*
|
||||
* Change icon
|
||||
* */
|
||||
/* Change icon */
|
||||
btnCloseCamera.setImageDrawable(getResources().getDrawable(R.drawable.ok));
|
||||
|
||||
/*
|
||||
* Reset variable
|
||||
* */
|
||||
/* Reset variable */
|
||||
cameraVisible = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
package cy.agorise.crystalwallet.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.AppCompatImageView;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
/**
|
||||
* Created by xd on 1/24/18.
|
||||
* ImageView which adjusts its size to always create a square
|
||||
*/
|
||||
|
||||
public class SquaredImageView extends AppCompatImageView {
|
||||
public SquaredImageView(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public SquaredImageView(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public SquaredImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
|
||||
int size = Math.min(getMeasuredWidth(), getMeasuredHeight());
|
||||
setMeasuredDimension(size, size);
|
||||
}
|
||||
}
|
|
@ -5,20 +5,28 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<RelativeLayout
|
||||
<android.support.constraint.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="24dp">
|
||||
|
||||
<android.support.constraint.Guideline
|
||||
android:id="@+id/centeredVerticalGuideline"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.5"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/topView"
|
||||
android:layout_width="match_parent"
|
||||
android:background="@drawable/receive_transaction_top_view"
|
||||
android:layout_height="120dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:layout_marginStart="0dp"
|
||||
android:layout_marginTop="0dp"
|
||||
android:layout_alignParentTop="true"/>
|
||||
android:background="@drawable/receive_transaction_top_view"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtTittle"
|
||||
|
@ -30,91 +38,105 @@
|
|||
android:textColor="@color/white"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_alignParentTop="true" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<cy.agorise.crystalwallet.util.CircularImageView
|
||||
android:id="@+id/gravatar"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_below="@+id/txtTittle"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:src="@drawable/avatar_placeholder" />
|
||||
android:src="@drawable/avatar_placeholder"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/txtTittle" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spTo"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_below="@+id/txtTittle"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginRight="20dp"/>
|
||||
android:layout_marginEnd="20dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/txtTittle"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvFromError"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/red"
|
||||
android:layout_below="@+id/gravatar"
|
||||
android:layout_marginTop="10dp"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/spTo"
|
||||
app:layout_constraintStart_toStartOf="@id/spTo"
|
||||
app:layout_constraintEnd_toEndOf="@id/spTo" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etAmount"
|
||||
android:layout_width="150dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/tvFromError"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:hint="@string/amount"
|
||||
android:inputType="numberDecimal"
|
||||
android:textSize="20sp" />
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvFromError"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/centeredVerticalGuideline"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAmountError"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/red"
|
||||
android:layout_below="@+id/etAmount"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/etAmount"
|
||||
app:layout_constraintStart_toStartOf="@id/etAmount"
|
||||
app:layout_constraintEnd_toEndOf="@id/etAmount"/>
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spAsset"
|
||||
android:layout_width="150dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginTop="25dp"
|
||||
android:gravity="top"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:inputType="textMultiLine"
|
||||
android:layout_below="@+id/tvFromError"
|
||||
android:textColor="@color/white"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginRight="20dp"/>
|
||||
app:layout_constraintStart_toEndOf="@id/centeredVerticalGuideline"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/viewSpinner"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/viewSpinner"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="3dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/gray" />
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:background="@color/gray"
|
||||
app:layout_constraintBottom_toBottomOf="@id/etAmount"
|
||||
app:layout_constraintStart_toStartOf="@id/spAsset"
|
||||
app:layout_constraintEnd_toEndOf="@id/spAsset"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAssetError"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/red"
|
||||
android:layout_below="@+id/spAsset"/>
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/spAsset" />
|
||||
|
||||
<cy.agorise.crystalwallet.util.SquaredImageView
|
||||
<ImageView
|
||||
android:id="@+id/ivQrCode"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginRight="24dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:contentDescription="@string/qr_code"
|
||||
android:src="@color/gray"
|
||||
android:layout_below="@+id/tvAmountError"
|
||||
android:layout_centerHorizontal="true"/>
|
||||
app:layout_constraintDimensionRatio="w,1:1"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvAmountError" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvShare"
|
||||
|
@ -126,7 +148,8 @@
|
|||
android:text="@string/share_this_qr"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_below="@+id/ivQrCode" />
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ivQrCode" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCancel"
|
||||
|
@ -137,9 +160,9 @@
|
|||
android:text="@string/close"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_below="@+id/ivQrCode"
|
||||
android:layout_alignParentRight="true"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/ivQrCode"
|
||||
app:layout_constraintRight_toRightOf="parent" />
|
||||
|
||||
</RelativeLayout>
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
||||
</ScrollView>
|
|
@ -120,15 +120,17 @@
|
|||
|
||||
<EditText
|
||||
android:id="@+id/etAmount"
|
||||
android:layout_width="150dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:inputType="numberDecimal"
|
||||
android:textSize="20sp"
|
||||
android:hint="@string/amount"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvToError"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvToError" />
|
||||
app:layout_constraintEnd_toStartOf="@id/centeredVerticalGuideline"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAmountError"
|
||||
|
@ -141,15 +143,15 @@
|
|||
|
||||
<Spinner
|
||||
android:id="@+id/spAsset"
|
||||
android:layout_width="150dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="12dp"
|
||||
android:gravity="top"
|
||||
android:inputType="textMultiLine"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toTopOf="@+id/etAmount"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/etAmount" />
|
||||
app:layout_constraintStart_toEndOf="@id/centeredVerticalGuideline"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/viewSpinner"
|
||||
|
@ -212,7 +214,7 @@
|
|||
app:fabSize="mini"
|
||||
app:layout_constraintStart_toEndOf="@id/centeredVerticalGuideline"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvScan"
|
||||
app:srcCompat="@drawable/ic_close" />
|
||||
app:srcCompat="@drawable/ok" />
|
||||
|
||||
<me.dm7.barcodescanner.zxing.ZXingScannerView
|
||||
android:id="@+id/ivCamera"
|
||||
|
@ -232,10 +234,7 @@
|
|||
android:background="@color/black"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:visibility="gone"
|
||||
android:visibility="visible"
|
||||
android:src="#666"
|
||||
app:layout_constraintTop_toTopOf="@id/ivCamera"
|
||||
app:layout_constraintStart_toStartOf="@id/ivCamera"
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<style name="dialog_theme_full" parent="android:Theme" >
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowIsFloating">false</item>
|
||||
<item name="android:windowAnimationStyle">@style/SendTransactionAnimation.Window</item>
|
||||
</style>
|
||||
|
||||
<style name="ActivityDialog" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
|
|
Loading…
Reference in New Issue