From d321a7a81826cc6ebbd0311bf52191974b028d9e Mon Sep 17 00:00:00 2001 From: Nikolai Kotchetkov Date: Tue, 5 Nov 2024 09:30:08 +0100 Subject: [PATCH 1/5] add activity and fragments --- README.md | 4 ++-- app/build.gradle | 8 ++++---- app/src/main/AndroidManifest.xml | 6 ++++++ .../otus/gpb/homework/fragments/ActivityA.kt | 20 +++++++++++++++++++ .../otus/gpb/homework/fragments/ActivityB.kt | 20 +++++++++++++++++++ .../fragments/fragments/FragmentAA.kt | 20 +++++++++++++++++++ .../fragments/fragments/FragmentAB.kt | 20 +++++++++++++++++++ .../fragments/fragments/FragmentBA.kt | 20 +++++++++++++++++++ .../fragments/fragments/FragmentBB.kt | 20 +++++++++++++++++++ app/src/main/res/layout/activity_a.xml | 10 ++++++++++ app/src/main/res/layout/activity_b.xml | 10 ++++++++++ app/src/main/res/layout/activity_main.xml | 18 ++++++++++++++++- app/src/main/res/layout/fragment_a_a.xml | 13 ++++++++++++ app/src/main/res/layout/fragment_a_b.xml | 14 +++++++++++++ app/src/main/res/layout/fragment_b_a.xml | 13 ++++++++++++ app/src/main/res/layout/fragment_b_b.xml | 14 +++++++++++++ app/src/main/res/values/strings.xml | 9 +++++++++ build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- 19 files changed, 235 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt create mode 100644 app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt create mode 100644 app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentAA.kt create mode 100644 app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentAB.kt create mode 100644 app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentBA.kt create mode 100644 app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentBB.kt create mode 100644 app/src/main/res/layout/activity_a.xml create mode 100644 app/src/main/res/layout/activity_b.xml create mode 100644 app/src/main/res/layout/fragment_a_a.xml create mode 100644 app/src/main/res/layout/fragment_a_b.xml create mode 100644 app/src/main/res/layout/fragment_b_a.xml create mode 100644 app/src/main/res/layout/fragment_b_b.xml diff --git a/README.md b/README.md index 4aa73e6..4d34ecc 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,8 @@ 1. Если девайс находится в landscape ориентации, то расположите фрагменты на одном уровне иерархии. В фрагмент **FragmentBB** добавьте кнопку, по нажатию на которую программа получит цвет из рандомайзера **ColorGenerator** и передаст его в **FragmentBA**, используя **FragmentResultListener**. Покрасте фон **FragmentBA** в полученный цвет. - [Landscape](./readme/task2Landscape.webp) + ![Landscape](./readme/task2Landscape.webp) 2. Если девайс находится в portrait ориентации, добавьте в **FragmentBA** кнопку, по нажатию на которой будет открываться **FragmentBB**, на том же уровне иерархии, что и **FragmentBA**. В **FragmentBB** добавьте кнопку, которая получит цвет из рандомайзера **ColorGenerator** и вернет результат в **FragmentBA**. Как и в пункте 1, покрасте фон **FragmentBA** в полученный цвет. - [Portrait](./readme/task2Portrait.webp) \ No newline at end of file + ![Portrait](./readme/task2Portrait.webp) diff --git a/app/build.gradle b/app/build.gradle index c5cf1b8..fc757c4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,10 +3,6 @@ plugins { id 'org.jetbrains.kotlin.android' } -kotlin { - jvmToolchain(17) -} - android { compileSdk 34 namespace "otus.gpb.homework.fragments" @@ -34,6 +30,9 @@ android { kotlinOptions { jvmTarget = '17' } + viewBinding { + enabled = true + } } dependencies { @@ -42,6 +41,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.activity:activity:1.9.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9604b34..46bc072 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,6 +12,12 @@ android:supportsRtl="true" android:theme="@style/Theme.Fragments" tools:targetApi="31"> + + diff --git a/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt b/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt new file mode 100644 index 0000000..3695b55 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt @@ -0,0 +1,20 @@ +package otus.gpb.homework.fragments + +import android.os.Bundle +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat + +class ActivityA : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContentView(R.layout.activity_a) + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + insets + } + } +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt b/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt new file mode 100644 index 0000000..284d615 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt @@ -0,0 +1,20 @@ +package otus.gpb.homework.fragments + +import android.os.Bundle +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat + +class ActivityB : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContentView(R.layout.activity_b) + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + insets + } + } +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentAA.kt b/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentAA.kt new file mode 100644 index 0000000..ff0be6a --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentAA.kt @@ -0,0 +1,20 @@ +package otus.gpb.homework.fragments.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import otus.gpb.homework.fragments.R + + +class FragmentAA : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_a_a, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentAB.kt b/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentAB.kt new file mode 100644 index 0000000..522ce31 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentAB.kt @@ -0,0 +1,20 @@ +package otus.gpb.homework.fragments.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import otus.gpb.homework.fragments.R + +class FragmentAB : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_a_b, container, false) + } + +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentBA.kt b/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentBA.kt new file mode 100644 index 0000000..55c9484 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentBA.kt @@ -0,0 +1,20 @@ +package otus.gpb.homework.fragments.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import otus.gpb.homework.fragments.R + +class FragmentBA : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_b_a, container, false) + } + +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentBB.kt b/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentBB.kt new file mode 100644 index 0000000..f65b675 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/fragments/FragmentBB.kt @@ -0,0 +1,20 @@ +package otus.gpb.homework.fragments.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import otus.gpb.homework.fragments.R + + +class FragmentBB : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_b_b, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_a.xml b/app/src/main/res/layout/activity_a.xml new file mode 100644 index 0000000..53423a9 --- /dev/null +++ b/app/src/main/res/layout/activity_a.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_b.xml b/app/src/main/res/layout/activity_b.xml new file mode 100644 index 0000000..835bd68 --- /dev/null +++ b/app/src/main/res/layout/activity_b.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 17eab17..0e713aa 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,15 +4,31 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:padding="16dp" tools:context=".MainActivity"> +