From 80f742d81dddadfe69395765531ae01e554764ab Mon Sep 17 00:00:00 2001 From: Vp-Ma Date: Wed, 7 Jan 2026 12:30:51 +0300 Subject: [PATCH] Homework_9 (View-Resources) implementation. --- app/build.gradle | 9 +- .../homework/viewandresources/CartActivity.kt | 49 +++++- .../viewandresources/CompoundViewContacts.kt | 39 ++++ .../homework/viewandresources/MainActivity.kt | 1 + app/src/main/res/drawable/ic_address.xml | 9 + app/src/main/res/drawable/ic_arrow_back.xml | 9 + app/src/main/res/drawable/ic_attach.xml | 9 + app/src/main/res/drawable/ic_cancel.xml | 9 + app/src/main/res/drawable/ic_date.xml | 9 + app/src/main/res/drawable/ic_login.xml | 9 + app/src/main/res/drawable/ic_mood.xml | 9 + app/src/main/res/drawable/ic_name.xml | 9 + app/src/main/res/drawable/ic_notes.xml | 9 + app/src/main/res/drawable/ic_phone.xml | 9 + app/src/main/res/drawable/ic_select.xml | 9 + .../main/res/drawable/shape_round_corners.xml | 5 + app/src/main/res/layout/activity_cart.xml | 166 ++++++++++++++++++ app/src/main/res/layout/activity_contacts.xml | 119 ++++++++++++- app/src/main/res/layout/cart_item.xml | 91 ++++++++++ .../res/layout/compound_view_contacts.xml | 48 +++++ app/src/main/res/layout/dialog_signin.xml | 77 +++++++- app/src/main/res/menu/cart_tool_bar.xml | 10 ++ app/src/main/res/menu/contacts_tool_bar.xml | 15 ++ app/src/main/res/values-night/colors.xml | 18 ++ app/src/main/res/values-night/themes.xml | 24 ++- app/src/main/res/values/attrs.xml | 12 ++ app/src/main/res/values/colors.xml | 8 + app/src/main/res/values/strings.xml | 24 +++ app/src/main/res/values/styles.xml | 45 +++++ app/src/main/res/values/themes.xml | 26 ++- 30 files changed, 868 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/CompoundViewContacts.kt create mode 100644 app/src/main/res/drawable/ic_address.xml create mode 100644 app/src/main/res/drawable/ic_arrow_back.xml create mode 100644 app/src/main/res/drawable/ic_attach.xml create mode 100644 app/src/main/res/drawable/ic_cancel.xml create mode 100644 app/src/main/res/drawable/ic_date.xml create mode 100644 app/src/main/res/drawable/ic_login.xml create mode 100644 app/src/main/res/drawable/ic_mood.xml create mode 100644 app/src/main/res/drawable/ic_name.xml create mode 100644 app/src/main/res/drawable/ic_notes.xml create mode 100644 app/src/main/res/drawable/ic_phone.xml create mode 100644 app/src/main/res/drawable/ic_select.xml create mode 100644 app/src/main/res/drawable/shape_round_corners.xml create mode 100644 app/src/main/res/layout/cart_item.xml create mode 100644 app/src/main/res/layout/compound_view_contacts.xml create mode 100644 app/src/main/res/menu/cart_tool_bar.xml create mode 100644 app/src/main/res/menu/contacts_tool_bar.xml create mode 100644 app/src/main/res/values-night/colors.xml create mode 100644 app/src/main/res/values/attrs.xml create mode 100644 app/src/main/res/values/styles.xml diff --git a/app/build.gradle b/app/build.gradle index debcfaf..4d7acf3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,12 +4,12 @@ plugins { } android { - compileSdk 35 + compileSdk 34 namespace = "otus.gpb.homework.viewandresources" defaultConfig { applicationId "otus.gpb.homework.viewandresources" minSdk 23 - targetSdk 35 + targetSdk 34 versionCode 1 versionName "1.0" @@ -29,10 +29,13 @@ android { kotlinOptions { jvmTarget = '17' } + viewBinding { + enabled = true + } } dependencies { - implementation 'androidx.core:core-ktx:1.15.0' + implementation 'androidx.core:core-ktx:1.13.1' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.0' 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..14cbe03 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt @@ -2,10 +2,57 @@ package otus.gpb.homework.viewandresources import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.View +import android.widget.TextView + +class CartActivity : AppCompatActivity()/*, CartItemListener*/ { + private lateinit var textCartItemCount :TextView + private lateinit var textCartOrderTotalAmount :TextView + private lateinit var textCartSubtotalAmount :TextView + private lateinit var textCartShippingAmount :TextView + private lateinit var textCartTaxAmount :TextView + private lateinit var textCartOrderTotal :TextView + private lateinit var textCartSubtotal :TextView + private lateinit var textCartShipping :TextView + private lateinit var textCartTax :TextView + + private lateinit var cartItemInc: View + private lateinit var textCartName :TextView + -class CartActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_cart) + + textCartOrderTotal = findViewById(R.id.textCartOrderTotal) + textCartSubtotal = findViewById(R.id.textCartSubtotal) + textCartShipping = findViewById(R.id.textCartShipping) + textCartTax = findViewById(R.id.textCartTax) + textCartItemCount = findViewById(R.id.textCartItemCount) + textCartOrderTotalAmount = findViewById(R.id.textCartOrderTotalAmount) + textCartSubtotalAmount = findViewById(R.id.textCartSubtotalAmount) + textCartShippingAmount = findViewById(R.id.textCartShippingAmount) + textCartTaxAmount = findViewById(R.id.textCartTaxAmount) + + cartItemInc = findViewById(R.id.сart_item_inc_1) + textCartName = cartItemInc.findViewById(R.id.cart_item_caption) + textCartName.text = getString(R.string.cart_item_name_1) + + cartItemInc = findViewById(R.id.сart_item_inc_2) + textCartName = cartItemInc.findViewById(R.id.cart_item_caption) + textCartName.text = getString(R.string.cart_item_name_2) + + cartItemInc = findViewById(R.id.сart_item_inc_3) + textCartName = cartItemInc.findViewById(R.id.cart_item_caption) + textCartName.text = getString(R.string.cart_item_name_3) + + cartItemInc = findViewById(R.id.сart_item_inc_4) + textCartName = cartItemInc.findViewById(R.id.cart_item_caption) + textCartName.text = getString(R.string.cart_item_name_4) + + textCartOrderTotal.text = getString(R.string.order_total) + textCartSubtotal.text = getString(R.string.subtotal) + textCartShipping.text = getString(R.string.shipping) + textCartTax.text = getString(R.string.tax) } } \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CompoundViewContacts.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CompoundViewContacts.kt new file mode 100644 index 0000000..e2217aa --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CompoundViewContacts.kt @@ -0,0 +1,39 @@ +package otus.gpb.homework.viewandresources.components + +import android.content.Context +import android.content.res.ColorStateList +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.withStyledAttributes +import otus.gpb.homework.viewandresources.R +import otus.gpb.homework.viewandresources.databinding.CompoundViewContactsBinding + + +class CompoundViewContacts @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStileAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStileAttr) { + + private val binding: CompoundViewContactsBinding + + init { + binding = CompoundViewContactsBinding.inflate(LayoutInflater.from(context), this) + initCustomAttibutes(attrs, defStileAttr) + } + + private fun initCustomAttibutes(attrs: AttributeSet?, defStyleAttr: Int) = with(binding) { + context.withStyledAttributes(attrs, R.styleable.CompoundViewContacts, defStyleAttr, 0) { + title.text = getString(R.styleable.CompoundViewContacts_contacts_title) + title.setTextColor(getColor(R.styleable.CompoundViewContacts_contacts_titleColor, 0)) + text.text = getString(R.styleable.CompoundViewContacts_contacts_text) + text.setTextColor(getColor(R.styleable.CompoundViewContacts_contacts_textColor, 0)) + binding.icon.setImageDrawable(getDrawable(R.styleable.CompoundViewContacts_contacts_icon)) + binding.icon.setImageTintList( + ColorStateList.valueOf( + getColor(R.styleable.CompoundViewContacts_contacts_iconColor, 0))) + binding.divider.dividerColor = (getColor(R.styleable.CompoundViewContacts_contacts_dividerColor, 0)) + } + } +} \ 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..abdcb90 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt @@ -10,6 +10,7 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + findViewById