From 6166cad35bc2a4404b1ac6e6c590602bc7ffcb89 Mon Sep 17 00:00:00 2001 From: Anv0l Date: Sun, 6 Apr 2025 14:56:18 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=A1=D0=B2=D0=B5=D1=80=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=83=20Con?= =?UTF-8?q?tacts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../viewandresources/ContactsActivity.kt | 3 + app/src/main/res/drawable/arrow_back.xml | 9 + app/src/main/res/drawable/attach_file.xml | 9 + app/src/main/res/drawable/bookmark.xml | 11 + app/src/main/res/drawable/calendar_today.xml | 10 + app/src/main/res/drawable/microphone.xml | 10 + app/src/main/res/drawable/more_vert.xml | 9 + app/src/main/res/drawable/person.xml | 10 + app/src/main/res/drawable/smartphone.xml | 10 + app/src/main/res/layout/activity_contacts.xml | 241 +++++++++++++++++- app/src/main/res/values/arrays.xml | 11 + app/src/main/res/values/buttons.xml | 15 ++ app/src/main/res/values/colors.xml | 3 + app/src/main/res/values/dimens.xml | 8 + app/src/main/res/values/strings.xml | 22 +- app/src/main/res/values/styles.xml | 18 ++ 16 files changed, 397 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/drawable/arrow_back.xml create mode 100644 app/src/main/res/drawable/attach_file.xml create mode 100644 app/src/main/res/drawable/bookmark.xml create mode 100644 app/src/main/res/drawable/calendar_today.xml create mode 100644 app/src/main/res/drawable/microphone.xml create mode 100644 app/src/main/res/drawable/more_vert.xml create mode 100644 app/src/main/res/drawable/person.xml create mode 100644 app/src/main/res/drawable/smartphone.xml create mode 100644 app/src/main/res/values/arrays.xml create mode 100644 app/src/main/res/values/buttons.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/styles.xml 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..968f84d 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt @@ -2,6 +2,9 @@ package otus.gpb.homework.viewandresources import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.ArrayAdapter +import android.widget.ListView +import android.widget.Toast class ContactsActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/res/drawable/arrow_back.xml b/app/src/main/res/drawable/arrow_back.xml new file mode 100644 index 0000000..1c25a9a --- /dev/null +++ b/app/src/main/res/drawable/arrow_back.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/attach_file.xml b/app/src/main/res/drawable/attach_file.xml new file mode 100644 index 0000000..0a4bdf3 --- /dev/null +++ b/app/src/main/res/drawable/attach_file.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/bookmark.xml b/app/src/main/res/drawable/bookmark.xml new file mode 100644 index 0000000..83e3088 --- /dev/null +++ b/app/src/main/res/drawable/bookmark.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/drawable/calendar_today.xml b/app/src/main/res/drawable/calendar_today.xml new file mode 100644 index 0000000..8621344 --- /dev/null +++ b/app/src/main/res/drawable/calendar_today.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/microphone.xml b/app/src/main/res/drawable/microphone.xml new file mode 100644 index 0000000..73cf67e --- /dev/null +++ b/app/src/main/res/drawable/microphone.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/more_vert.xml b/app/src/main/res/drawable/more_vert.xml new file mode 100644 index 0000000..287b838 --- /dev/null +++ b/app/src/main/res/drawable/more_vert.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/person.xml b/app/src/main/res/drawable/person.xml new file mode 100644 index 0000000..c624472 --- /dev/null +++ b/app/src/main/res/drawable/person.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/smartphone.xml b/app/src/main/res/drawable/smartphone.xml new file mode 100644 index 0000000..250191c --- /dev/null +++ b/app/src/main/res/drawable/smartphone.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_contacts.xml b/app/src/main/res/layout/activity_contacts.xml index 6ef087b..374edbb 100644 --- a/app/src/main/res/layout/activity_contacts.xml +++ b/app/src/main/res/layout/activity_contacts.xml @@ -4,6 +4,245 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fitsSystemWindows="true" tools:context=".ContactsActivity"> - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 0000000..0a011e4 --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,11 @@ + + + + Mobile + Home + Work + Cellular + Fax + Other + + \ No newline at end of file diff --git a/app/src/main/res/values/buttons.xml b/app/src/main/res/values/buttons.xml new file mode 100644 index 0000000..155f953 --- /dev/null +++ b/app/src/main/res/values/buttons.xml @@ -0,0 +1,15 @@ + + + + + + + \ 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..38bc029 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,4 +7,7 @@ #FF018786 #FF000000 #FFFFFFFF + + #191C20 + #E1E2E9 \ 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..04c1e0c --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,8 @@ + + + 15dp + 10dp + 5dp + 25sp + 5dp + \ 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..756c2ef 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,23 @@ - + View & Resources + Text placeholder + Contact - back + Contact - options + contact - attach file + Name + Phone + Select + Save + Address + City + Country + Date + Notes + +1(234)567-8900 + Mobile + 123, Lenin Street, Apt. 6 + Tokyo + Australia + Birthday + Loves burgers and french fries \ 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..f633ead --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + + + From 7e1a0f53b7b0eea7e29e0a3bb74e4034d588979c Mon Sep 17 00:00:00 2001 From: Anv0l Date: Sun, 13 Apr 2025 16:55:16 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=A1=D0=B2=D0=B5=D1=80=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D1=88=D0=B8=D0=B5=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=B8=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Корзина * Элемент корзины (для RecycleView) * Диалог логина --- app/build.gradle | 3 +- .../homework/viewandresources/CartActivity.kt | 99 ++++++++- .../homework/viewandresources/MainActivity.kt | 2 +- app/src/main/res/drawable/banana.jpg | Bin 0 -> 2044 bytes app/src/main/res/drawable/bread.jpg | Bin 0 -> 7305 bytes app/src/main/res/drawable/butter.jpg | Bin 0 -> 4126 bytes app/src/main/res/drawable/cancel.xml | 9 + app/src/main/res/drawable/eggs.jpg | Bin 0 -> 2202 bytes app/src/main/res/drawable/light_mode.xml | 9 + app/src/main/res/drawable/mood.xml | 9 + app/src/main/res/drawable/salt.jpg | Bin 0 -> 3299 bytes app/src/main/res/drawable/sausage.jpg | Bin 0 -> 3652 bytes .../main/res/layout-land/activity_cart.xml | 190 ++++++++++++++++++ app/src/main/res/layout/activity_cart.xml | 175 +++++++++++++++- app/src/main/res/layout/activity_contacts.xml | 80 ++++---- app/src/main/res/layout/cart_item.xml | 66 ++++++ app/src/main/res/layout/dialog_signin.xml | 84 +++++++- app/src/main/res/menu/cart_toolbar_menu.xml | 8 + .../main/res/menu/contact_toolbar_menu.xml | 13 ++ app/src/main/res/values-night/themes.xml | 6 + app/src/main/res/values/attrs.xml | 9 + app/src/main/res/values/buttons.xml | 15 -- app/src/main/res/values/colors.xml | 20 ++ app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 29 +++ app/src/main/res/values/styles.xml | 36 ++++ app/src/main/res/values/themes.xml | 7 + 27 files changed, 808 insertions(+), 66 deletions(-) create mode 100644 app/src/main/res/drawable/banana.jpg create mode 100644 app/src/main/res/drawable/bread.jpg create mode 100644 app/src/main/res/drawable/butter.jpg create mode 100644 app/src/main/res/drawable/cancel.xml create mode 100644 app/src/main/res/drawable/eggs.jpg create mode 100644 app/src/main/res/drawable/light_mode.xml create mode 100644 app/src/main/res/drawable/mood.xml create mode 100644 app/src/main/res/drawable/salt.jpg create mode 100644 app/src/main/res/drawable/sausage.jpg create mode 100644 app/src/main/res/layout-land/activity_cart.xml create mode 100644 app/src/main/res/layout/cart_item.xml create mode 100644 app/src/main/res/menu/cart_toolbar_menu.xml create mode 100644 app/src/main/res/menu/contact_toolbar_menu.xml create mode 100644 app/src/main/res/values/attrs.xml delete mode 100644 app/src/main/res/values/buttons.xml diff --git a/app/build.gradle b/app/build.gradle index debcfaf..5835561 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -35,5 +35,6 @@ dependencies { implementation 'androidx.core:core-ktx:1.15.0' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' - implementation 'androidx.constraintlayout:constraintlayout:2.2.0' + implementation 'androidx.constraintlayout:constraintlayout:2.2.1' + implementation 'androidx.recyclerview:recyclerview:1.4.0' } \ No newline at end of file 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..6aebeb1 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,108 @@ package otus.gpb.homework.viewandresources +import android.media.Image import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import org.w3c.dom.Text class CartActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_cart) + + class CartItem( + var image: Int, + var name: String, + var category: String, + var extra: String, + var price: Double = 0.0 + ) + + fun formatPrice(price: Double): String { + return "%.2f".format(price) + } + class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val itemName: TextView = itemView.findViewById(R.id.cart_item_name) + val itemCategory: TextView = itemView.findViewById(R.id.cart_item_category) + val itemExtra: TextView = itemView.findViewById(R.id.cart_item_extra) + val itemPrice: TextView = itemView.findViewById(R.id.cart_item_price) + val itemImage: ImageView = itemView.findViewById(R.id.cart_item_image) + } + + class MyAdapter(private val data: List) : + RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.cart_item, parent, false) + return MyViewHolder(view) + } + + override fun getItemCount(): Int { + return data.size + } + + override fun onBindViewHolder(holder: MyViewHolder, position: Int) { + holder.itemName.width = holder.itemName.measuredWidth + holder.itemName.isSelected = true + with(data[position]) { + holder.itemName.text = name + holder.itemPrice.text = formatPrice(price) + holder.itemCategory.text = category + holder.itemExtra.text = extra + + holder.itemImage.setImageResource(image) + } + + } + + override fun onViewAttachedToWindow(holder: MyViewHolder) { + holder.itemName.isSelected = true + } + + override fun onViewDetachedFromWindow(holder: MyViewHolder) { + holder.itemName.isSelected = false + } + + } + + + + val recyclerView = findViewById(R.id.item_list) + + val data: List = listOf( + CartItem(R.drawable.eggs, "Куриные яйца", "Продукты", "Сорт С2", 12.0), + CartItem(R.drawable.banana, "Бананы", "Продукты", "Ямайка", 2.0), + CartItem(R.drawable.salt, "Соль пищевая", "Продукты", "Без ГМО", 1.0), + CartItem(R.drawable.butter, "Сливочное масло", "Продукты", "72.5% жирности", 2.55), + CartItem(R.drawable.bread, "Хлеб ржаной", "Продукты", "Собвестнного производства", 1.99), + CartItem(R.drawable.sausage, "Сосиски молочные", "Продукты", "Без молока и мяса", 4.0) + ) + + recyclerView.layoutManager = LinearLayoutManager(this) + recyclerView.adapter = MyAdapter(data) + + findViewById(R.id.cart_items_count).text = resources.getQuantityString(R.plurals.cart_items_count, data.count(), data.count()) + + var subtotal = 0.0 + data.forEach { item -> + subtotal += item.price + } + findViewById(R.id.cart_subtotal_value).text = formatPrice(subtotal) + val shipping = 25.0 + findViewById(R.id.cart_shipping_value).text = formatPrice(shipping) + val tax = 0.2 + val taxAmount = subtotal * tax + findViewById(R.id.cart_tax_value).text = formatPrice(taxAmount) + val orderTotal = subtotal + taxAmount + shipping + findViewById(R.id.cart_order_total_value).text = formatPrice(orderTotal) } -} \ No newline at end of file +} + diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt index 22b779c..0c76ae7 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt @@ -19,7 +19,7 @@ class MainActivity : AppCompatActivity() { } findViewById