diff --git a/app/build.gradle b/app/build.gradle index debcfaf..b1e0b1b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,6 +34,7 @@ android { 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 'com.google.android.material:material:1.11.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.0' + 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..e31dd9f 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,50 @@ package otus.gpb.homework.viewandresources import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.Menu +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.appbar.MaterialToolbar class CartActivity : AppCompatActivity() { + + private lateinit var toolbar: MaterialToolbar + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_cart) + + toolbar = findViewById(R.id.topAppBar) + setSupportActionBar(toolbar) + toolbar.title = "Cart" + val recyclerView: RecyclerView = findViewById(R.id.recyclerViewItems) + recyclerView.layoutManager = LinearLayoutManager(this) + + + recyclerView.addItemDecoration( + DividerItemDecoration(this, DividerItemDecoration.VERTICAL)) + val listItems = getItemList() + recyclerView.adapter = CustomRecyclerAdapter(listItems) + + } + + private fun getItemList(): List{ + val res = mutableListOf() + repeat(200) { + val item = Item(). apply { + title = "Title $it" + category = "Category $it" + price = (10..100).random() + } + res.add(item) + } + return res + } + + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + val inflater = menuInflater + inflater.inflate(R.menu.top_app_bar_cart, menu) + return super.onCreateOptionsMenu(menu) } } \ 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..59b9feb 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,37 @@ package otus.gpb.homework.viewandresources -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.Menu +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import com.google.android.material.appbar.MaterialToolbar + class ContactsActivity : AppCompatActivity() { + private lateinit var toolbar: MaterialToolbar + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + enableEdgeToEdge() setContentView(R.layout.activity_contacts) + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.contacts)) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + insets + } + + toolbar = findViewById(R.id.topAppBar) + setSupportActionBar(toolbar) + toolbar.title = "Contacts" + + } + + + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + val inflater = menuInflater + inflater.inflate(R.menu.top_app_bar, menu) + return super.onCreateOptionsMenu(menu) } } \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CustomRecyclerAdapter.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CustomRecyclerAdapter.kt new file mode 100644 index 0000000..ffba920 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CustomRecyclerAdapter.kt @@ -0,0 +1,43 @@ +package otus.gpb.homework.viewandresources + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.textview.MaterialTextView + +class CustomRecyclerAdapter(private val items: List): + RecyclerView.Adapter() { + + class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val title = itemView.findViewById(R.id.textViewTitle) + val category = itemView.findViewById(R.id.textViewCategory) + val priceItem = itemView.findViewById(R.id.textViewPriceItem) + val imageItem = itemView.findViewById(R.id.imageView) + val description = itemView.findViewById(R.id.textViewDescription) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { + val itemView = LayoutInflater.from(parent.context) + .inflate(R.layout.item, parent, false) + return MyViewHolder(itemView) + } + + override fun getItemCount(): Int { + return items.size + } + + override fun onBindViewHolder(holder: MyViewHolder, position: Int) { + val item = items[position] + holder.title.text = item.title + holder.category.text = item.category + holder.priceItem.text = item.price.toString() + holder.description.text = item.description + holder.imageItem.setImageResource(R.drawable.cat) + } + fun myList(vararg i: T) = arrayListOf(*i) + val list = myList(1, 5, 3, 2, 4) +} + +interface My1 \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/Item.kt b/app/src/main/java/otus/gpb/homework/viewandresources/Item.kt new file mode 100644 index 0000000..d0aaa93 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/Item.kt @@ -0,0 +1,9 @@ +package otus.gpb.homework.viewandresources + +class Item { + var title: String = "title" + var category: String = "category" + var price: Int = 0 + var image: Int = R.drawable.cat + var description: String = "description" +} \ No newline at end of file diff --git a/app/src/main/res/drawable/baseline_cancel_24.xml b/app/src/main/res/drawable/baseline_cancel_24.xml new file mode 100644 index 0000000..08e3336 --- /dev/null +++ b/app/src/main/res/drawable/baseline_cancel_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/bookmark_24dp.xml b/app/src/main/res/drawable/bookmark_24dp.xml new file mode 100644 index 0000000..e4d37bb --- /dev/null +++ b/app/src/main/res/drawable/bookmark_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/calendar_24dp.xml b/app/src/main/res/drawable/calendar_24dp.xml new file mode 100644 index 0000000..6560876 --- /dev/null +++ b/app/src/main/res/drawable/calendar_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/cat.png b/app/src/main/res/drawable/cat.png new file mode 100644 index 0000000..bc962d1 Binary files /dev/null and b/app/src/main/res/drawable/cat.png differ diff --git a/app/src/main/res/drawable/check_circle_outline_24.xml b/app/src/main/res/drawable/check_circle_outline_24.xml new file mode 100644 index 0000000..1ae7e3e --- /dev/null +++ b/app/src/main/res/drawable/check_circle_outline_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/dollar_ico.xml b/app/src/main/res/drawable/dollar_ico.xml new file mode 100644 index 0000000..0b4b5dc --- /dev/null +++ b/app/src/main/res/drawable/dollar_ico.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_attach.xml b/app/src/main/res/drawable/ic_attach.xml new file mode 100644 index 0000000..3e67d17 --- /dev/null +++ b/app/src/main/res/drawable/ic_attach.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/mic_24dp.xml b/app/src/main/res/drawable/mic_24dp.xml new file mode 100644 index 0000000..3d75935 --- /dev/null +++ b/app/src/main/res/drawable/mic_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/person_24dp.xml b/app/src/main/res/drawable/person_24dp.xml new file mode 100644 index 0000000..1275210 --- /dev/null +++ b/app/src/main/res/drawable/person_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/round_outline.xml b/app/src/main/res/drawable/round_outline.xml new file mode 100644 index 0000000..f85460c --- /dev/null +++ b/app/src/main/res/drawable/round_outline.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/smartphone.xml b/app/src/main/res/drawable/smartphone.xml new file mode 100644 index 0000000..c07da84 --- /dev/null +++ b/app/src/main/res/drawable/smartphone.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/sunny_24dp.xml b/app/src/main/res/drawable/sunny_24dp.xml new file mode 100644 index 0000000..b0e291f --- /dev/null +++ b/app/src/main/res/drawable/sunny_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/west_24px.xml b/app/src/main/res/drawable/west_24px.xml new file mode 100644 index 0000000..1d4e0a0 --- /dev/null +++ b/app/src/main/res/drawable/west_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/font-v26/roboto.xml b/app/src/main/res/font-v26/roboto.xml new file mode 100644 index 0000000..f3c62ef --- /dev/null +++ b/app/src/main/res/font-v26/roboto.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/font/roboto_italic.ttf b/app/src/main/res/font/roboto_italic.ttf new file mode 100644 index 0000000..c3abaef Binary files /dev/null and b/app/src/main/res/font/roboto_italic.ttf differ diff --git a/app/src/main/res/font/roboto_light.ttf b/app/src/main/res/font/roboto_light.ttf new file mode 100644 index 0000000..6fcd5f9 Binary files /dev/null and b/app/src/main/res/font/roboto_light.ttf differ diff --git a/app/src/main/res/font/roboto_medium.ttf b/app/src/main/res/font/roboto_medium.ttf new file mode 100644 index 0000000..d629e98 Binary files /dev/null and b/app/src/main/res/font/roboto_medium.ttf differ diff --git a/app/src/main/res/font/roboto_regular.ttf b/app/src/main/res/font/roboto_regular.ttf new file mode 100644 index 0000000..7e3bb2f Binary files /dev/null and b/app/src/main/res/font/roboto_regular.ttf differ diff --git a/app/src/main/res/font/roboto_semibold.ttf b/app/src/main/res/font/roboto_semibold.ttf new file mode 100644 index 0000000..3f34834 Binary files /dev/null and b/app/src/main/res/font/roboto_semibold.ttf differ diff --git a/app/src/main/res/font/roboto_semibolditalic.ttf b/app/src/main/res/font/roboto_semibolditalic.ttf new file mode 100644 index 0000000..132cca1 Binary files /dev/null and b/app/src/main/res/font/roboto_semibolditalic.ttf differ diff --git a/app/src/main/res/font/roboto_thin.ttf b/app/src/main/res/font/roboto_thin.ttf new file mode 100644 index 0000000..6ee97b8 Binary files /dev/null and b/app/src/main/res/font/roboto_thin.ttf differ diff --git a/app/src/main/res/font/roboto_thinitalic.ttf b/app/src/main/res/font/roboto_thinitalic.ttf new file mode 100644 index 0000000..0381198 Binary files /dev/null and b/app/src/main/res/font/roboto_thinitalic.ttf differ diff --git a/app/src/main/res/layout-land/activity_contacts.xml b/app/src/main/res/layout-land/activity_contacts.xml new file mode 100644 index 0000000..18caa34 --- /dev/null +++ b/app/src/main/res/layout-land/activity_contacts.xml @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +