Fix bug and improve layout

This commit is contained in:
Nezumi
2023-04-15 10:21:09 +07:00
parent f91ca323b5
commit a77959a2d7
16 changed files with 202 additions and 87 deletions
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\phanh\.android\avd\Pixel_3a_API_33_x86_64.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-04-14T05:04:45.947805500Z" />
</component>
</project>
+8
View File
@@ -0,0 +1,8 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="ClangTidy" enabled="true" level="WARNING" enabled_by_default="true">
<option name="clangTidyChecks" value="-*,cert-dcl21-cpp,cert-dcl58-cpp,cert-err34-c,cert-err52-cpp,cert-err60-cpp,cert-flp30-c,cert-msc50-cpp,cert-msc51-cpp,cert-str34-c,cppcoreguidelines-interfaces-global-init,cppcoreguidelines-narrowing-conversions,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-pro-type-static-cast-downcast,cppcoreguidelines-slicing,google-default-arguments,google-explicit-constructor,google-runtime-operator,hicpp-exception-baseclass,hicpp-multiway-paths-covered,mpi-buffer-deref,mpi-type-mismatch,openmp-use-default-none,performance-faster-string-find,performance-for-range-copy,performance-implicit-conversion-in-loop,performance-inefficient-algorithm,performance-inefficient-string-concatenation,performance-inefficient-vector-operation,performance-move-const-arg,performance-move-constructor-init,performance-no-automatic-move,performance-noexcept-move-constructor,performance-trivially-destructible,performance-type-promotion-in-math-fn,performance-unnecessary-copy-initialization,performance-unnecessary-value-param" />
</inspection_tool>
</profile>
</component>
+1 -2
View File
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17_PREVIEW" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">
+4 -2
View File
@@ -26,7 +26,7 @@ android {
minSdk 26 minSdk 26
targetSdk 32 targetSdk 32
versionCode 1 versionCode 1
versionName "0.1.2" versionName "0.3.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.release signingConfig signingConfigs.release
@@ -96,6 +96,7 @@ dependencies {
implementation 'com.saadahmedev.popup-dialog:popup-dialog:1.0.2' implementation 'com.saadahmedev.popup-dialog:popup-dialog:1.0.2'
implementation 'com.github.gabriel-TheCode:AestheticDialogs:1.3.6' implementation 'com.github.gabriel-TheCode:AestheticDialogs:1.3.6'
implementation 'io.github.pilgr:paperdb:2.7.2' implementation 'io.github.pilgr:paperdb:2.7.2'
implementation 'com.github.techinessoverloaded:progress-dialog:1.5.1'
implementation 'androidx.browser:browser:1.5.0' implementation 'androidx.browser:browser:1.5.0'
@@ -105,7 +106,8 @@ dependencies {
implementation platform('com.google.firebase:firebase-bom:31.2.3') implementation platform('com.google.firebase:firebase-bom:31.2.3')
implementation("com.squareup.okhttp3:okhttp:4.10.0") implementation("com.squareup.okhttp3:okhttp:4.10.0")
// ADD the API-only library to all variants // ADD the API-only library to all variants
implementation 'com.google.firebase:firebase-appdistribution-api:16.0.0-beta07' implementation 'com.google.firebase:firebase-appdistribution:16.0.0-beta08'
} }
Binary file not shown.
+1 -1
View File
@@ -12,7 +12,7 @@
"filters": [], "filters": [],
"attributes": [], "attributes": [],
"versionCode": 1, "versionCode": 1,
"versionName": "0.1.2", "versionName": "0.3.2",
"outputFile": "app-release.apk" "outputFile": "app-release.apk"
} }
], ],
@@ -61,12 +61,14 @@ import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Task;
import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationBarView; import com.google.android.material.navigation.NavigationBarView;
import com.google.firebase.appdistribution.FirebaseAppDistribution; import com.google.firebase.appdistribution.AppDistributionRelease;
import com.google.firebase.appdistribution.InterruptionLevel; import com.google.firebase.appdistribution.OnProgressListener;
import com.google.firebase.appdistribution.UpdateProgress;
import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser; import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GetTokenResult; import com.google.firebase.auth.GetTokenResult;
import com.google.firebase.messaging.FirebaseMessaging; import com.google.firebase.messaging.FirebaseMessaging;
import com.techiness.progressdialoglibrary.ProgressDialog;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -79,13 +81,11 @@ import retrofit2.Response;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
public static boolean slider, shop, recommendFood, recentFood, loadUser; public static boolean slider, shop, recommendFood, recentFood, loadUser;
private final FirebaseAppDistribution firebaseAppDistribution = FirebaseAppDistribution.getInstance();
private ViewPager2 viewPager2; private ViewPager2 viewPager2;
private BottomNavigationView bottomNavigationView; private BottomNavigationView bottomNavigationView;
private FirebaseAuth mAuth; private FirebaseAuth mAuth;
private FirebaseUser user; private FirebaseUser user;
private static ConstraintLayout progressLayout; private static ConstraintLayout progressLayout;
//Location //Location
private static final int REQUEST_CHECK_SETTINGS = 100; private static final int REQUEST_CHECK_SETTINGS = 100;
private static final long UPDATE_INTERVAL_IN_MILLISECONDS = 1000; private static final long UPDATE_INTERVAL_IN_MILLISECONDS = 1000;
@@ -169,6 +169,56 @@ public class MainActivity extends AppCompatActivity {
//Initialize Firebase Auth //Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance(); mAuth = FirebaseAuth.getInstance();
if(Common.firebaseAppDistribution.isTesterSignedIn()){
//Customise progress dialog
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTheme(ProgressDialog.THEME_LIGHT);
progressDialog.setMode(ProgressDialog.MODE_DETERMINATE);
progressDialog.setProgress(0);
progressDialog.setMessage("Xin vui lòng chờ...");
progressDialog.showProgressTextAsFraction(true);
progressDialog.setProgressTintList(getColorStateList(R.color.primaryColor));
progressDialog.setSecondaryProgressTintList(getColorStateList(R.color.primaryLightColor));
Common.firebaseAppDistribution.checkForNewRelease().addOnCompleteListener(new OnCompleteListener<AppDistributionRelease>() {
@Override
public void onComplete(@NonNull Task<AppDistributionRelease> task) {
if(task.isSuccessful()){
AppDistributionRelease appDistributionRelease = task.getResult();
if(appDistributionRelease != null){
progressDialog.show();
}
}
}
});
Common.firebaseAppDistribution.updateIfNewReleaseAvailable().addOnProgressListener(new OnProgressListener() {
@Override
public void onProgressUpdate(@NonNull UpdateProgress updateProgress) {
double totalBytes = updateProgress.getApkFileTotalBytes();
double number = (updateProgress.getApkBytesDownloaded() / totalBytes) * 100;
progressDialog.setProgress((int) number);
progressDialog.setSecondaryProgress((int) number + 10);
if(number == 100){
progressDialog.dismiss();
}
}
}).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(!task.isSuccessful()){
progressDialog.dismiss();
}
}
});
}
//Paper Init //Paper Init
Paper.init(this); Paper.init(this);
@@ -179,14 +229,12 @@ public class MainActivity extends AppCompatActivity {
startPowerSaverIntent(this); startPowerSaverIntent(this);
checkNotificationPermission(); checkNotificationPermission();
firebaseAppDistribution.showFeedbackNotification(
// Text providing notice to your testers about collection and
// processing of their feedback data
"Nhấp vào đây để đánh giá app Foodify!",
// The level of interruption for the notification
InterruptionLevel.HIGH);
getLocation();
}
private void getLocation() {
if (Common.CURRENT_LOCATION == null) { if (Common.CURRENT_LOCATION == null) {
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
mSettingsClient = LocationServices.getSettingsClient(this); mSettingsClient = LocationServices.getSettingsClient(this);
@@ -212,8 +260,6 @@ public class MainActivity extends AppCompatActivity {
checkLocationPermission(); checkLocationPermission();
}
//Init location user //Init location user
final Handler handler = new Handler(); final Handler handler = new Handler();
handler.postDelayed(new Runnable() { handler.postDelayed(new Runnable() {
@@ -229,6 +275,7 @@ public class MainActivity extends AppCompatActivity {
}, 4000); }, 4000);
} }
}
private void getTokenFCM(){ private void getTokenFCM(){
FirebaseMessaging.getInstance().getToken() FirebaseMessaging.getInstance().getToken()
@@ -355,8 +402,8 @@ public class MainActivity extends AppCompatActivity {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == LOCATION_REQUEST_CODE){ if(requestCode == LOCATION_REQUEST_CODE){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this, "Đã cấp quyền thành công!", Toast.LENGTH_SHORT).show(); getLocation();
} else { } else {
showDialogPermission("Hãy cho ứng dụng truy cập vào vị trí của bạn để trải nghiệm tốt hơn!"); showDialogPermission("Hãy cho ứng dụng truy cập vào vị trí của bạn để trải nghiệm tốt hơn!");
} }
@@ -479,7 +479,7 @@ public class OrderCheckOutActivity extends AppCompatActivity {
new AestheticDialog.Builder(OrderCheckOutActivity.this, DialogStyle.FLAT, DialogType.SUCCESS) new AestheticDialog.Builder(OrderCheckOutActivity.this, DialogStyle.FLAT, DialogType.SUCCESS)
.setTitle("Thành công!") .setTitle("Thành công!")
.setMessage("Bạn đã đặt hàng thành công cho đơn hàng #" + transactionId) .setMessage("Bạn đã đặt hàng thành công cho đơn hàng #" + transactionId)
.setCancelable(true) .setCancelable(false)
.setOnClickListener(new OnDialogClickListener() { .setOnClickListener(new OnDialogClickListener() {
@Override @Override
public void onClick(@NonNull AestheticDialog.Builder builder) { public void onClick(@NonNull AestheticDialog.Builder builder) {
@@ -1,28 +1,25 @@
package com.capstone.foodify.Activity; package com.capstone.foodify.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import com.capstone.foodify.API.FoodApiToken; import com.capstone.foodify.API.FoodApiToken;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.Fragment.HomeFragment;
import com.capstone.foodify.Model.User; import com.capstone.foodify.Model.User;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Task;
import com.google.android.material.button.MaterialButton; import com.google.android.material.button.MaterialButton;
import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputEditText;
@@ -43,7 +40,7 @@ import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
public class SignInActivity extends AppCompatActivity { public class SignInActivity extends AppCompatActivity {
private static final String TAG = "SignInActivity";
private FirebaseAuth mAuth; private FirebaseAuth mAuth;
private TextView signUp_textView, forgotPassword_textView; private TextView signUp_textView, forgotPassword_textView;
private TextInputLayout textInput_email, textInput_password; private TextInputLayout textInput_email, textInput_password;
@@ -52,34 +49,10 @@ public class SignInActivity extends AppCompatActivity {
private ImageView back_image; private ImageView back_image;
private ConstraintLayout progressLayout; private ConstraintLayout progressLayout;
private String email, password = null; private String email, password = null;
@IntRange(from = 0, to = 3)
public int getConnectionType() {
int result = 0; // Returns connection type. 0: none; 1: mobile data; 2: wifi
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkCapabilities capabilities = cm.getNetworkCapabilities(cm.getActiveNetwork());
if (capabilities != null) {
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
result = 2;
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
result = 1;
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
result = 3;
}
}
}
return result;
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//Check internet connection
if(getConnectionType() == 0){
Common.showErrorInternetConnectionNotification(this);
}
//Init firebase app //Init firebase app
FirebaseApp.initializeApp(SignInActivity.this); FirebaseApp.initializeApp(SignInActivity.this);
setContentView(R.layout.activity_sign_in); setContentView(R.layout.activity_sign_in);
@@ -274,7 +247,8 @@ public class SignInActivity extends AppCompatActivity {
@Override @Override
public void onFailure(Call<User> call, Throwable t) { public void onFailure(Call<User> call, Throwable t) {
Log.e(TAG, t.toString()); System.out.println("ERROR: " + t);
Common.showErrorServerNotification(SignInActivity.this, "Không thể đăng nhập tài khoản! Vui lòng thử lại sau!");
} }
}); });
} else { } else {
@@ -23,6 +23,7 @@ import com.capstone.foodify.Fragment.HomeFragment;
import com.capstone.foodify.Model.Basket; import com.capstone.foodify.Model.Basket;
import com.capstone.foodify.Model.Food; import com.capstone.foodify.Model.Food;
import com.capstone.foodify.Model.User; import com.capstone.foodify.Model.User;
import com.google.firebase.appdistribution.FirebaseAppDistribution;
import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser; import com.google.firebase.auth.FirebaseUser;
import com.thecode.aestheticdialogs.AestheticDialog; import com.thecode.aestheticdialogs.AestheticDialog;
@@ -41,7 +42,7 @@ import retrofit2.Response;
public class Common { public class Common {
//https://foodify-backend-production.up.railway.app/ //https://foodify-backend-production.up.railway.app/
public static final String BASE_URL = "http://192.168.1.183:8080/api/"; public static final String BASE_URL = "https://foodify-backend-production.up.railway.app/api/";
public static String FCM_TOKEN = null; public static String FCM_TOKEN = null;
public static Location CURRENT_LOCATION = null; public static Location CURRENT_LOCATION = null;
public static final String MAP_API = "AIzaSyAY14Ic32UP26Hg6GILznOfbBihiY5BUxw"; public static final String MAP_API = "AIzaSyAY14Ic32UP26Hg6GILznOfbBihiY5BUxw";
@@ -55,6 +56,7 @@ public class Common {
public static String TOKEN = null; public static String TOKEN = null;
public static User CURRENT_USER = null; public static User CURRENT_USER = null;
public static String FINAL_SHOP = null; public static String FINAL_SHOP = null;
public static final FirebaseAppDistribution firebaseAppDistribution = FirebaseAppDistribution.getInstance();
public static String changeCurrencyUnit(float price){ public static String changeCurrencyUnit(float price){
Locale locale = new Locale("vi", "VN"); Locale locale = new Locale("vi", "VN");
@@ -1,5 +1,7 @@
package com.capstone.foodify.Fragment; package com.capstone.foodify.Fragment;
import static com.capstone.foodify.Common.firebaseAppDistribution;
import android.app.Dialog; import android.app.Dialog;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
@@ -9,6 +11,7 @@ import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.capstone.foodify.Activity.AccountAndProfileActivity; import com.capstone.foodify.Activity.AccountAndProfileActivity;
@@ -18,6 +21,9 @@ import com.capstone.foodify.Activity.MainActivity;
import com.capstone.foodify.Activity.OrderActivity; import com.capstone.foodify.Activity.OrderActivity;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.appdistribution.FirebaseAppDistribution;
import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseAuth;
import com.makeramen.roundedimageview.RoundedImageView; import com.makeramen.roundedimageview.RoundedImageView;
import com.saadahmedsoft.popupdialog.PopupDialog; import com.saadahmedsoft.popupdialog.PopupDialog;
@@ -29,7 +35,7 @@ import io.paperdb.Paper;
public class ProfileFragment extends Fragment { public class ProfileFragment extends Fragment {
private static final String TAG = "ProfileFragment"; private static final String TAG = "ProfileFragment";
LinearLayout account_and_profile, manage_address, favorite_food, order_history, log_out; LinearLayout account_and_profile, manage_address, favorite_food, order_history, feed_back, log_out;
PopupDialog popupDialog; PopupDialog popupDialog;
TextView user_name; TextView user_name;
RoundedImageView profile_avatar; RoundedImageView profile_avatar;
@@ -40,13 +46,7 @@ public class ProfileFragment extends Fragment {
View rootView = inflater.inflate(R.layout.fragment_profile, container, false); View rootView = inflater.inflate(R.layout.fragment_profile, container, false);
//Init component //Init component
account_and_profile = rootView.findViewById(R.id.account_and_profile); initComponent(rootView);
manage_address = rootView.findViewById(R.id.manage_address);
favorite_food = rootView.findViewById(R.id.favorite_food);
order_history = rootView.findViewById(R.id.order_history);
log_out = rootView.findViewById(R.id.log_out);
user_name = rootView.findViewById(R.id.user_name);
profile_avatar = rootView.findViewById(R.id.profile_avatar);
popupDialog = PopupDialog.getInstance(getContext()); popupDialog = PopupDialog.getInstance(getContext());
@@ -90,6 +90,13 @@ public class ProfileFragment extends Fragment {
} }
}); });
feed_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
firebaseAppDistribution.startFeedback("Cảm ơn vì sự đóng góp ý kiến từ các bạn!");
}
});
log_out.setOnClickListener(new View.OnClickListener() { log_out.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@@ -129,6 +136,17 @@ public class ProfileFragment extends Fragment {
return rootView; return rootView;
} }
private void initComponent(View rootView) {
account_and_profile = rootView.findViewById(R.id.account_and_profile);
manage_address = rootView.findViewById(R.id.manage_address);
favorite_food = rootView.findViewById(R.id.favorite_food);
order_history = rootView.findViewById(R.id.order_history);
log_out = rootView.findViewById(R.id.log_out);
user_name = rootView.findViewById(R.id.user_name);
profile_avatar = rootView.findViewById(R.id.profile_avatar);
feed_back = rootView.findViewById(R.id.feedback);
}
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

+1 -1
View File
@@ -117,7 +117,7 @@
<TextView <TextView
android:id="@+id/total_text_view" android:id="@+id/total_text_view"
android:text="12500" android:text="900.000 ₫"
android:fontFamily="@font/opensans" android:fontFamily="@font/opensans"
android:textSize="24sp" android:textSize="24sp"
android:textColor="@android:color/white" android:textColor="@android:color/white"
+53 -6
View File
@@ -33,9 +33,12 @@
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="25sp" android:textSize="25sp"
android:fontFamily="@font/opensans" android:fontFamily="@font/opensans"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:layout_marginStart="50dp"
android:layout_marginEnd="50dp"
android:textAlignment="center"
app:layout_constraintTop_toBottomOf="@id/profile_avatar" app:layout_constraintTop_toBottomOf="@id/profile_avatar"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@@ -90,7 +93,7 @@
android:id="@+id/manage_address" android:id="@+id/manage_address"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="40dp" android:layout_marginTop="30dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
app:layout_constraintTop_toBottomOf="@id/account_and_profile" app:layout_constraintTop_toBottomOf="@id/account_and_profile"
@@ -135,7 +138,7 @@
android:id="@+id/favorite_food" android:id="@+id/favorite_food"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="40dp" android:layout_marginTop="30dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
app:layout_constraintTop_toBottomOf="@id/manage_address" app:layout_constraintTop_toBottomOf="@id/manage_address"
@@ -180,7 +183,7 @@
android:id="@+id/order_history" android:id="@+id/order_history"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="40dp" android:layout_marginTop="30dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
app:layout_constraintTop_toBottomOf="@id/favorite_food" app:layout_constraintTop_toBottomOf="@id/favorite_food"
@@ -221,10 +224,10 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/log_out" android:id="@+id/feedback"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="40dp" android:layout_marginTop="30dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
app:layout_constraintTop_toBottomOf="@id/order_history" app:layout_constraintTop_toBottomOf="@id/order_history"
@@ -233,6 +236,50 @@
android:orientation="horizontal" android:orientation="horizontal"
> >
<ImageView
android:id="@+id/ic_feedback"
android:src="@drawable/feedback"
android:layout_width="32dp"
android:layout_height="32dp"
tools:ignore="ContentDescription"
app:tint="@color/primaryColor"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="12dp"
android:layout_weight="1"
android:fontFamily="@font/opensans"
android:text="Đóng góp ý kiến"
android:textColor="@color/black"
android:textSize="18sp"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center_vertical"
android:rotation="180"
android:src="@drawable/back_button"
tools:ignore="ContentDescription" />
</LinearLayout>
<LinearLayout
android:id="@+id/log_out"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
app:layout_constraintTop_toBottomOf="@id/feedback"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:orientation="horizontal"
>
<ImageView <ImageView
android:id="@+id/ic_log_out" android:id="@+id/ic_log_out"
android:src="@drawable/logout" android:src="@drawable/logout"
+9 -9
View File
@@ -46,12 +46,13 @@
android:orientation="horizontal" android:orientation="horizontal"
android:background="@color/white" android:background="@color/white"
android:layout_margin="7dp" android:layout_margin="7dp"
android:gravity="center"
> >
<ImageView <ImageView
android:id="@+id/image_view" android:id="@+id/image_view"
android:layout_width="110dp" android:layout_width="100dp"
android:layout_height="110dp" android:layout_height="100dp"
android:src="@drawable/food" android:src="@drawable/food"
android:scaleType="centerCrop" android:scaleType="centerCrop"
app:riv_corner_radius="10dip" app:riv_corner_radius="10dip"
@@ -74,7 +75,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="47dp" android:layout_height="47dp"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
app:layout_constraintStart_toEndOf="@id/image_view" app:layout_constraintStart_toEndOf="@id/image_view"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -120,7 +120,7 @@
<TextView <TextView
android:id="@+id/price_text_view" android:id="@+id/price_text_view"
android:text="$5.00" android:text="$5.00"
android:textSize="25sp" android:textSize="23sp"
android:textColor="@color/primaryColor" android:textColor="@color/primaryColor"
android:fontFamily="@font/bebas" android:fontFamily="@font/bebas"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -143,17 +143,17 @@
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="0.4" android:layout_weight="0.5"
> >
<TextView <TextView
android:id="@+id/txt_increment" android:id="@+id/txt_increment"
android:text="+" android:text="+"
android:textSize="19sp" android:textSize="21sp"
android:padding="5dp" android:padding="5dp"
android:textColor="@color/primaryColor" android:textColor="@color/primaryColor"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:gravity="center" android:gravity="center"
android:layout_weight="0.3" android:layout_weight="0.3"
@@ -168,7 +168,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:gravity="center" android:gravity="center"
android:layout_weight="0.6" android:layout_weight="0.5"
/> />
<TextView <TextView
@@ -178,7 +178,7 @@
android:padding="5dp" android:padding="5dp"
android:textColor="@color/primaryColor" android:textColor="@color/primaryColor"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:gravity="center" android:gravity="center"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_weight="0.3" android:layout_weight="0.3"
+1
View File
@@ -4,6 +4,7 @@
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
<color name="primaryColor">#ff8084</color> <color name="primaryColor">#ff8084</color>
<color name="primaryLightColor">#FF9FA1</color>
<color name="primaryDarkColor">#CF2E33</color> <color name="primaryDarkColor">#CF2E33</color>
<color name="gray">#A3A3A3</color> <color name="gray">#A3A3A3</color>
<color name="secondary">#F99928</color> <color name="secondary">#F99928</color>