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 @@ - - + +