Android Navigation Component, Dagger Hilt and other things

This commit is contained in:
2021-07-10 17:39:43 +03:00
parent 98bbc6a791
commit 1c773df3e1
136 changed files with 1214 additions and 401 deletions
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?colorAccent" android:state_focused="true" />
<item android:alpha="0.87" android:color="?colorOnSurface" android:state_hovered="true" />
<item android:alpha="0.12" android:color="?colorOnSurface" android:state_enabled="false" />
<item android:alpha="0.38" android:color="?colorOnSurface" />
</selector>
+15 -37
View File
@@ -1,43 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
xmlns:tools="http://schemas.android.com/tools">
<androidx.coordinatorlayout.widget.CoordinatorLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomBar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_gravity="bottom"
android:visibility="gone"
app:backgroundTint="?colorPrimary"
app:elevation="0.5dp"
app:itemIconTint="@drawable/navigation_view_items_colors"
app:itemTextColor="@drawable/navigation_view_items_colors"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/activity_main_bottom" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/activity_main_drawer_header"
app:itemBackground="@drawable/navigation_view_item_background_selector"
app:itemIconTint="@drawable/navigation_view_item_icon_colors"
app:itemTextColor="@drawable/navigation_view_item_text_colors"
app:menu="@menu/activity_main_drawer" />
android:orientation="vertical"
tools:context=".MainActivity">
</androidx.drawerlayout.widget.DrawerLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainer"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:defaultNavHost="true"
app:navGraph="@navigation/main" />
</LinearLayout>
</layout>
@@ -18,7 +18,11 @@
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways">
<include layout="@layout/toolbar" />
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
app:titleCentered="true" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
+112 -109
View File
@@ -1,135 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/loginRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.core.widget.NestedScrollView
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/loginRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
android:orientation="vertical">
<RelativeLayout
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:fillViewport="true">
<com.google.android.material.card.MaterialCardView
android:id="@+id/loginCard"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:minWidth="380dp"
app:cardCornerRadius="9dp"
app:cardElevation="0dp"
app:strokeColor="?dividerHorizontal"
app:strokeWidth="2dp">
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<FrameLayout
android:id="@+id/logoContainer"
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/ic_logo_fast_border">
<com.meloda.fast.widget.CircleImageView
android:id="@+id/logoImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:padding="42dp"
android:src="@drawable/ic_fast_lightning"
app:tint="?colorAccent" />
</FrameLayout>
<LinearLayout
android:id="@+id/loginCardLayout"
android:id="@+id/loginContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
android:layout_marginTop="48dp"
android:orientation="horizontal">
<TextView
android:id="@+id/loginLogoText"
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/loginImage"
style="@style/AppTheme.Login.EditText.Icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
android:fontFamily="@font/google_sans_regular"
android:text="@string/fast_messenger"
android:textColor="@color/login_secondary_color"
android:textSize="26sp" />
android:layout_marginTop="16dp"
android:src="@drawable/ic_baseline_account_circle_24"
app:tint="?colorAccent" />
<FrameLayout
android:id="@+id/loginLogoContainer"
android:layout_width="176dp"
android:layout_height="176dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
android:background="@drawable/ic_logo_fast_border">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/loginLogoImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_fast_lightning"
app:tint="?colorAccent" />
</FrameLayout>
<LinearLayout
android:id="@+id/loginEmailContainer"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/loginLayout"
style="@style/Widget.TextInputLayout.NoError.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:orientation="horizontal">
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/loginEmailImage"
style="@style/AppTheme.Login.EditText.Icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_email" />
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/loginEmailEditText"
style="@style/AppTheme.Login.EditText"
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/loginInput"
android:layout_width="match_parent"
android:hint="@string/email_login_hint"
android:layout_height="48dp"
android:hint="@string/login_hint"
android:imeOptions="actionGo"
android:inputType="textEmailAddress" />
android:inputType="textEmailAddress"
android:textCursorDrawable="@null" />
</LinearLayout>
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/loginPasswordContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/loginPasswordImage"
style="@style/AppTheme.Login.EditText.Icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_key" />
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/loginPasswordEditText"
style="@style/AppTheme.Login.EditText"
android:layout_width="match_parent"
android:hint="@string/password_login_hint"
android:inputType="textPassword" />
</LinearLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/loginAuthorize"
style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
android:fontFamily="@font/google_sans_regular"
android:letterSpacing="0"
android:paddingStart="36dp"
android:paddingEnd="36dp"
android:text="@string/log_in"
android:textColor="@color/login_button_text_color"
android:textSize="14sp"
app:backgroundTint="?colorAccent"
app:cornerRadius="50dp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<LinearLayout
android:id="@+id/passwordContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:orientation="horizontal">
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/passwordImage"
style="@style/AppTheme.Login.EditText.Icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:src="@drawable/ic_key"
app:tint="?colorAccent" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/passwordLayout"
style="@style/Widget.TextInputLayout.NoError.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
app:passwordToggleTint="?colorAccent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/passwordInput"
android:layout_width="match_parent"
android:layout_height="48dp"
android:hint="@string/password_login_hint"
android:inputType="textPassword"
android:textCursorDrawable="@null" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/authorize"
style="@style/Widget.MaterialButton"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginTop="12dp"
android:fontFamily="@font/google_sans_medium"
android:letterSpacing="0"
android:paddingStart="24dp"
android:paddingEnd="16dp"
android:text="@string/log_in"
android:textColor="?colorAccent"
android:textSize="14sp"
app:backgroundTint="?colorSurface"
app:cornerRadius="50dp"
app:elevation="16dp"
app:icon="@drawable/ic_arrow_end"
app:iconGravity="end"
app:iconTint="?colorAccent"
app:rippleColor="?colorAccent" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.appcompat.widget.LinearLayoutCompat>
</layout>
+29
View File
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="48dp" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomBar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_gravity="bottom"
app:backgroundTint="?colorPrimary"
app:elevation="0.5dp"
app:itemIconTint="@drawable/navigation_view_items_colors"
app:itemTextColor="@drawable/navigation_view_items_colors"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/activity_main_bottom" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</layout>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/friends">
</navigation>
+46
View File
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation 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/main"
app:startDestination="@id/loginFragment">
<fragment
android:id="@+id/mainFragment"
android:name="com.meloda.fast.fragment.main.MainFragment"
android:label="MainFragment"
tools:layout="@layout/fragment_main" />
<fragment
android:id="@+id/loginFragment"
android:name="com.meloda.fast.fragment.login.LoginFragment"
android:label="LoginFragment"
tools:layout="@layout/fragment_login">
<action
android:id="@+id/toMain"
app:destination="@id/mainFragment"
app:popUpTo="@id/loginFragment"
app:popUpToInclusive="true" />
<action
android:id="@+id/toValidation"
app:destination="@id/validationFragment" />
</fragment>
<fragment
android:id="@+id/validationFragment"
android:name="com.meloda.fast.fragment.login.ValidationFragment"
android:label="ValidationFragment"
tools:layout="@layout/fragment_validation">
<action
android:id="@+id/toLogin"
app:destination="@id/loginFragment"
app:popUpTo="@id/validationFragment"
app:popUpToInclusive="true" />
</fragment>
</navigation>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/messages">
</navigation>
-48
View File
@@ -1,48 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="Theme.MaterialComponents.NoActionBar.Bridge">
<item name="colorPrimary">@color/dark_primary</item>
<item name="colorPrimaryDark">@color/dark_primaryDark</item>
<item name="colorAccent">@color/dark_accent</item>
<item name="toolbarStyle">@style/AppTheme.Toolbar</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="dialogCornerRadius">12dp</item>
<item name="android:windowBackground">@color/dark_background</item>
<item name="itemTitleColor">@android:color/white</item>
<item name="dividerHorizontal">@color/dark_divider</item>
<item name="textColorSecondary">@color/dark_textSecondary</item>
<item name="editTextFilledBackgroundColor">@color/dark_edittext_filled_background</item>
<item name="messageInTextColor">@color/dark_message_in</item>
<item name="messageOutTextColor">@color/dark_message_out</item>
<item name="android:windowAnimationStyle">@style/AppTheme.ActivityAnimation</item>
<item name="android:navigationBarColor" tools:targetApi="M">@color/dark_navigationBar</item>
<item name="android:navigationBarDividerColor" tools:targetApi="o_mr1">@android:color/transparent</item>
</style>
<style name="AppTheme.FullScreenDialog" parent="Theme.MaterialComponents.Dialog.Bridge">
<item name="colorPrimary">@color/dark_primary</item>
<item name="colorPrimaryDark">@color/dark_primaryDark</item>
<item name="colorAccent">@color/dark_accent</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowBackground">@color/dark_background</item>
<item name="actionMenuTextColor">?colorAccent</item>
<item name="android:navigationBarColor" tools:targetApi="o_mr1">?colorPrimaryDark</item>
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">true</item>
<item name="android:navigationBarDividerColor" tools:targetApi="o_mr1">
@android:color/transparent
</item>
<item name="colorControlNormal">?colorAccent</item>
</style>
<style name="AppTheme.ProfileDialog" parent="Theme.MaterialComponents.BottomSheetDialog">
<item name="colorAccent">@color/dark_accent</item>
<item name="colorPrimary">@color/dark_primary</item>
<item name="colorPrimaryDark">@color/dark_primaryDark</item>
</style>
</resources>
+1
View File
@@ -153,5 +153,6 @@
<string name="captcha_hint">Captcha</string>
<string name="input_captcha">Input code from picture</string>
<string name="login_hint">Login</string>
</resources>
+21 -2
View File
@@ -5,7 +5,9 @@
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/accent</item>
<item name="toolbarStyle">@style/AppTheme.Toolbar</item>
<item name="android:windowLightStatusBar">true</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="dialogCornerRadius">12dp</item>
@@ -26,14 +28,14 @@
@android:color/transparent
</item>
</style>
<style name="AppTheme.Toolbar" parent="Widget.MaterialComponents.Toolbar.PrimarySurface">
<item name="titleTextAppearance">@style/Toolbar.Title</item>
<item name="android:textSize">24sp</item>
<item name="android:elevation">3dp</item>
<item name="titleTextColor">?colorAccent</item>
<item name="android:background">?colorPrimary</item>
<item name="titleTextColor">@color/accent</item>
</style>
<style name="Toolbar.Title" parent="TextAppearance.MaterialComponents.Body1">
@@ -86,4 +88,21 @@
<item name="colorPrimaryDark">@color/primaryDark</item>
</style>
<style name="Widget.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="errorEnabled">true</item>
</style>
<style name="Widget.TextInputLayout.NoError.Dense" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
<item name="errorEnabled">true</item>
<item name="hintTextColor">?colorAccent</item>
<item name="boxStrokeColor">@drawable/edit_text_box_background</item>
<item name="boxStrokeErrorColor">?colorAccent</item>
<item name="boxStrokeWidth">2dp</item>
</style>
<style name="Widget.MaterialButton" parent="Widget.MaterialComponents.Button">
</style>
</resources>