diff --git a/app/build.gradle b/app/build.gradle
index debcfaf..48d735f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,10 +12,13 @@ android {
targetSdk 35
versionCode 1
versionName "1.0"
-
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
+ buildFeatures {
+ viewBinding true
+ }
+
buildTypes {
release {
minifyEnabled false
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 608e135..02b9d7e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,9 @@
android:name=".ContactsActivity"
android:label="Contacts"
android:exported="false" />
+
diff --git a/app/src/main/cart_placeholder-playstore.png b/app/src/main/cart_placeholder-playstore.png
new file mode 100644
index 0000000..ce2797f
Binary files /dev/null and b/app/src/main/cart_placeholder-playstore.png differ
diff --git a/app/src/main/ic_cart_placeholder-playstore.png b/app/src/main/ic_cart_placeholder-playstore.png
new file mode 100644
index 0000000..765dedb
Binary files /dev/null and b/app/src/main/ic_cart_placeholder-playstore.png differ
diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt
index b6cbf73..ad5f88e 100644
--- a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt
+++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt
@@ -1,11 +1,47 @@
package otus.gpb.homework.viewandresources
-
-import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
+import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import otus.gpb.homework.viewandresources.model.CartItem
+import otus.gpb.homework.viewandresources.cart.CartAdapter
class CartActivity : AppCompatActivity() {
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_cart)
+ val root = findViewById(R.id.rootCartLayout)
+ val startPadding = resources.getDimensionPixelSize(R.dimen.contact_screen_padding_start)
+ val endPadding = resources.getDimensionPixelSize(R.dimen.contact_screen_padding_end)
+
+ ViewCompat.setOnApplyWindowInsetsListener(root) { view, insets ->
+ val statusInsets = insets.getInsets(WindowInsetsCompat.Type.statusBars())
+ view.setPaddingRelative(
+ startPadding,
+ statusInsets.top,
+ endPadding,
+ view.paddingBottom
+ )
+ WindowInsetsCompat.CONSUMED
+ }
+ ViewCompat.requestApplyInsets(root)
+ val items = listOf(
+ CartItem("List item 1", "Category", "Supporting line lorem ipsum…", "$35", R.drawable.ic_cart_placeholder),
+ CartItem("List item 2", "Category", "Supporting line lorem ipsum…", "$35", R.drawable.ic_cart_placeholder),
+ CartItem("List item 3", "Category", "Supporting line lorem ipsum…", "$35", R.drawable.ic_cart_placeholder),
+ CartItem("List item 4", "Category", "Supporting line lorem ipsum…", "$35", R.drawable.ic_cart_placeholder)
+ )
+
+ val recycler = findViewById(R.id.recyclerCart)
+ recycler.layoutManager = LinearLayoutManager(this)
+ recycler.adapter = CartAdapter(items)
+
+ val itemsCountText = findViewById(R.id.textItemsCount)
+ itemsCountText.text = getString(R.string.cart_items_count, items.size)
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt
index 25f1ffb..0fa9b6f 100644
--- a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt
+++ b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt
@@ -1,11 +1,35 @@
package otus.gpb.homework.viewandresources
-
-import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.constraintlayout.widget.ConstraintLayout
class ContactsActivity : AppCompatActivity() {
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_contacts)
+
+ val root = findViewById(R.id.rootLayout)
+
+ val startPadding = resources.getDimensionPixelSize(
+ R.dimen.contact_screen_padding_start
+ )
+ val endPadding = resources.getDimensionPixelSize(
+ R.dimen.contact_screen_padding_end
+ )
+
+ ViewCompat.setOnApplyWindowInsetsListener(root) { view, insets ->
+ val statusInsets = insets.getInsets(WindowInsetsCompat.Type.statusBars())
+
+ view.setPaddingRelative(
+ startPadding, statusInsets.top, endPadding, view.paddingBottom
+ )
+
+ WindowInsetsCompat.CONSUMED
+ }
+
+ ViewCompat.requestApplyInsets(root)
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/LoginActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/LoginActivity.kt
new file mode 100644
index 0000000..21f8bc5
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/viewandresources/LoginActivity.kt
@@ -0,0 +1,15 @@
+package otus.gpb.homework.viewandresources
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+
+class LoginActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_login)
+
+ setSupportActionBar(findViewById(R.id.topAppBar))
+ }
+}
+
diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt
new file mode 100644
index 0000000..731e047
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt
@@ -0,0 +1,40 @@
+package otus.gpb.homework.viewandresources.cart
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import otus.gpb.homework.viewandresources.databinding.ItemCartBinding
+import otus.gpb.homework.viewandresources.model.CartItem
+
+data class CartItem(
+ val title: String,
+ val category: String,
+ val subtitle: String,
+ val price: String,
+ val imageResId: Int
+)
+
+class CartAdapter(
+ private val items: List
+) : RecyclerView.Adapter() {
+
+ class VH(val binding: ItemCartBinding) : RecyclerView.ViewHolder(binding.root)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
+ val inflater = LayoutInflater.from(parent.context)
+ val binding = ItemCartBinding.inflate(inflater, parent, false)
+ return VH(binding)
+ }
+
+ override fun onBindViewHolder(holder: VH, position: Int) {
+ val item = items[position]
+ with(holder.binding) {
+ cartTitle.text = item.title
+ cartCategory.text = item.category
+ cartSubtitle.text = item.subtitle
+ cartPrice.text = item.price
+ cartImage.setImageResource(item.imageResId)
+ }
+ }
+
+ override fun getItemCount(): Int = items.size
+}
diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/model/CartItem.kt b/app/src/main/java/otus/gpb/homework/viewandresources/model/CartItem.kt
new file mode 100644
index 0000000..3bd49ce
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/viewandresources/model/CartItem.kt
@@ -0,0 +1,9 @@
+package otus.gpb.homework.viewandresources.model
+
+data class CartItem(
+ val title: String,
+ val category: String,
+ val subtitle: String,
+ val price: String,
+ val imageResId: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/model/Contact.kt b/app/src/main/java/otus/gpb/homework/viewandresources/model/Contact.kt
new file mode 100644
index 0000000..13624f7
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/viewandresources/model/Contact.kt
@@ -0,0 +1,6 @@
+package otus.gpb.homework.viewandresources.model
+
+data class Contact(
+ val name: String,
+ val phone: String
+)
diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/ui/contacts/ContactsAdapter.kt b/app/src/main/java/otus/gpb/homework/viewandresources/ui/contacts/ContactsAdapter.kt
new file mode 100644
index 0000000..5c8feba
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/viewandresources/ui/contacts/ContactsAdapter.kt
@@ -0,0 +1,4 @@
+package otus.gpb.homework.viewandresources.ui.contacts
+
+class ContactsAdapter {
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/contact_field_background.xml b/app/src/main/res/drawable/contact_field_background.xml
new file mode 100644
index 0000000..a8814c7
--- /dev/null
+++ b/app/src/main/res/drawable/contact_field_background.xml
@@ -0,0 +1,23 @@
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_arrow_back_24.xml b/app/src/main/res/drawable/ic_arrow_back_24.xml
new file mode 100644
index 0000000..b5cf27c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_arrow_back_24.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_arrow_drop_down_24.xml b/app/src/main/res/drawable/ic_arrow_drop_down_24.xml
new file mode 100644
index 0000000..330b77b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_arrow_drop_down_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_attach_24.xml b/app/src/main/res/drawable/ic_attach_24.xml
new file mode 100644
index 0000000..ba4a1ad
--- /dev/null
+++ b/app/src/main/res/drawable/ic_attach_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bookmark_24.xml b/app/src/main/res/drawable/ic_bookmark_24.xml
new file mode 100644
index 0000000..7c1b981
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bookmark_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_calendar_24.xml b/app/src/main/res/drawable/ic_calendar_24.xml
new file mode 100644
index 0000000..11ee625
--- /dev/null
+++ b/app/src/main/res/drawable/ic_calendar_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_cart_placeholder.png b/app/src/main/res/drawable/ic_cart_placeholder.png
new file mode 100644
index 0000000..011bbbd
Binary files /dev/null and b/app/src/main/res/drawable/ic_cart_placeholder.png differ
diff --git a/app/src/main/res/drawable/ic_cart_smile.xml b/app/src/main/res/drawable/ic_cart_smile.xml
new file mode 100644
index 0000000..888b6ef
--- /dev/null
+++ b/app/src/main/res/drawable/ic_cart_smile.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_close_20.xml b/app/src/main/res/drawable/ic_close_20.xml
new file mode 100644
index 0000000..b6fed4f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_close_20.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_menu_48.xml b/app/src/main/res/drawable/ic_menu_48.xml
new file mode 100644
index 0000000..b7bdf60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_menu_48.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_mic_24.xml b/app/src/main/res/drawable/ic_mic_24.xml
new file mode 100644
index 0000000..893fd24
--- /dev/null
+++ b/app/src/main/res/drawable/ic_mic_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_more_vert_24.xml b/app/src/main/res/drawable/ic_more_vert_24.xml
new file mode 100644
index 0000000..0e052f4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_more_vert_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_person.xml b/app/src/main/res/drawable/ic_person.xml
new file mode 100644
index 0000000..5d8b807
--- /dev/null
+++ b/app/src/main/res/drawable/ic_person.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_person_24.xml b/app/src/main/res/drawable/ic_person_24.xml
new file mode 100644
index 0000000..3782eca
--- /dev/null
+++ b/app/src/main/res/drawable/ic_person_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sun_24.xml b/app/src/main/res/drawable/ic_sun_24.xml
new file mode 100644
index 0000000..b05ee5c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_sun_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_cart.xml b/app/src/main/res/layout/activity_cart.xml
index 57dc4d4..43cf33b 100644
--- a/app/src/main/res/layout/activity_cart.xml
+++ b/app/src/main/res/layout/activity_cart.xml
@@ -2,8 +2,177 @@
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_contacts.xml b/app/src/main/res/layout/activity_contacts.xml
index 6ef087b..e311e3a 100644
--- a/app/src/main/res/layout/activity_contacts.xml
+++ b/app/src/main/res/layout/activity_contacts.xml
@@ -2,8 +2,433 @@
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..d6b1c3d
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_cart.xml b/app/src/main/res/layout/item_cart.xml
new file mode 100644
index 0000000..07752bf
--- /dev/null
+++ b/app/src/main/res/layout/item_cart.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/menu/menu_cart.xml b/app/src/main/res/menu/menu_cart.xml
new file mode 100644
index 0000000..6ed3155
--- /dev/null
+++ b/app/src/main/res/menu/menu_cart.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/app/src/main/res/menu/menu_contact.xml b/app/src/main/res/menu/menu_contact.xml
new file mode 100644
index 0000000..566749f
--- /dev/null
+++ b/app/src/main/res/menu/menu_contact.xml
@@ -0,0 +1,15 @@
+
diff --git a/app/src/main/res/menu/menu_login.xml b/app/src/main/res/menu/menu_login.xml
new file mode 100644
index 0000000..9595249
--- /dev/null
+++ b/app/src/main/res/menu/menu_login.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/app/src/main/res/values-night/color.xml b/app/src/main/res/values-night/color.xml
new file mode 100644
index 0000000..58d39fa
--- /dev/null
+++ b/app/src/main/res/values-night/color.xml
@@ -0,0 +1,14 @@
+
+
+ #000000
+ #33353A
+ #E1E2E9
+ #A7C8FF
+ #04305F
+ #FFC7B8FF
+ #33FFFFFF
+ #282A2F
+ #2A2D34
+ #33353A
+ #C4C6CF
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index b236109..c001f18 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -1,7 +1,10 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index f8c6127..f3abe9b 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,10 +1,16 @@
- #FFBB86FC
- #FF6200EE
- #FF3700B3
- #FF03DAC5
- #FF018786
- #FF000000
- #FFFFFFFF
+ #43474E
+ #E1E2E9
+ #F5F5F5
+ #43474E
+ #3E5F90
+ #FFFFFF
+ #6E5676
+ #33000000
+ #3E5F90
+ #74777F
+ #E1E2E9
+ #C4C6CF
+
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..e27d602
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,26 @@
+
+ 9dp
+ 11dp
+ 8dp
+ 6dp
+ 12dp
+ 8dp
+ 7dp
+ 4dp
+ 80dp
+ 12dp
+ 16dp
+ 16dp
+ 8dp
+ 24dp
+ 16dp
+ 12dp
+ 10dp
+ 16dp
+ 16dp
+ 1dp
+ 40dp
+ 41dp
+ 246dp
+ 329dp
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a7036ac..d297d1c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,21 @@
View & Resources
+ Filipp Kirkorov
+ Attach
+ More
+ Cart
+ Place order
+ %1$d items in your cart
+ Order Total:
+ $175.50
+ Tax:
+ $10.50
+ $25
+ Shipping:
+ $140
+ Subtotal:
+ Category
+ List item 1
+ $35
+ Supporting line text lorem ipsum…
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..5a63cea
--- /dev/null
+++ b/app/src/main/res/values/styles.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 62ec3ea..7d89cb1 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,9 +1,6 @@
-
-
+
+
\ No newline at end of file