From 5d3a20a85454c1fc5e5ca661f7ee21dd03b0e93e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 9 Nov 2025 19:14:09 +0000 Subject: [PATCH 1/5] Initial plan From e1e8d411fe89b9b94f4e69cf84ddd3ac29ab3c32 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 9 Nov 2025 19:18:16 +0000 Subject: [PATCH 2/5] Update Kotlin to 1.8.20, Gradle to 8.0, AGP to 8.0.2, and library version to 1.5.0 Co-authored-by: faruktoptas <1595227+faruktoptas@users.noreply.github.com> --- README.md | 2 +- app/build.gradle | 1 + build.gradle | 2 +- fancyshowcaseview/build.gradle | 1 + gradle/wrapper/gradle-wrapper.properties | 2 +- versions.gradle | 4 ++-- 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b85c76e..fa51e72 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ allprojects { Then, add the library to your module `build.gradle` ```gradle dependencies { - implementation 'com.github.faruktoptas:FancyShowCaseView:1.4.0' + implementation 'com.github.faruktoptas:FancyShowCaseView:1.5.0' } ``` diff --git a/app/build.gradle b/app/build.gradle index 8b21490..762f6d8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,6 +19,7 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { + namespace 'me.toptas.fancyshowcasesample' compileSdkVersion compile_sdk_version defaultConfig { diff --git a/build.gradle b/build.gradle index ae2c819..7945289 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ buildscript { maven { url "https://jitpack.io" } } dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' + classpath 'com.android.tools.build:gradle:8.0.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/fancyshowcaseview/build.gradle b/fancyshowcaseview/build.gradle index fd03d6d..f45f5f2 100644 --- a/fancyshowcaseview/build.gradle +++ b/fancyshowcaseview/build.gradle @@ -5,6 +5,7 @@ apply plugin: 'kotlin-android' group = 'com.github.faruktoptas' android { + namespace 'me.toptas.fancyshowcase' compileSdkVersion compile_sdk_version defaultConfig { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a42fef6..d033298 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip diff --git a/versions.gradle b/versions.gradle index 970d0cc..c96bb33 100644 --- a/versions.gradle +++ b/versions.gradle @@ -1,9 +1,9 @@ buildscript { - ext.kotlin_version = '1.7.21' + ext.kotlin_version = '1.8.20' ext.compile_sdk_version = 34 ext.min_sdk_version = 19 ext.target_sdk_version = 34 - ext.version_name = '1.4.0' + ext.version_name = '1.5.0' ext.appcompat = '1.3.0' ext.material = '1.3.0' } \ No newline at end of file From da2981a0413e7c00d2835bfd3348a397665f4923 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 11 Nov 2025 20:42:27 +0000 Subject: [PATCH 3/5] Fix JVM target compatibility by setting Java and Kotlin to 1.8 Co-authored-by: faruktoptas <1595227+faruktoptas@users.noreply.github.com> --- app/build.gradle | 7 +++++++ fancyshowcaseview/build.gradle | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 762f6d8..9078781 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,6 +47,13 @@ android { signingConfig signingConfigs.release } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } } dependencies { diff --git a/fancyshowcaseview/build.gradle b/fancyshowcaseview/build.gradle index f45f5f2..9d69571 100644 --- a/fancyshowcaseview/build.gradle +++ b/fancyshowcaseview/build.gradle @@ -23,6 +23,13 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } } dependencies { From 0fb8c22cb2030f5ae2a094f3912622be6e2514e8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Nov 2025 20:59:09 +0000 Subject: [PATCH 4/5] Remove deprecated kotlin-android-extensions plugin Co-authored-by: faruktoptas <1595227+faruktoptas@users.noreply.github.com> --- app/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 9078781..7423bc4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,7 +16,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { namespace 'me.toptas.fancyshowcasesample' From 7c9a3e3f497ef90d0c93b1f22f453f86f854007a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Nov 2025 21:18:28 +0000 Subject: [PATCH 5/5] Migrate all activities to ViewBinding Co-authored-by: faruktoptas <1595227+faruktoptas@users.noreply.github.com> --- app/build.gradle | 3 + .../fancyshowcasesample/AnimatedActivity.kt | 13 +++-- .../CustomQueueActivity.kt | 12 ++-- .../fancyshowcasesample/MainActivity.kt | 58 ++++++++++--------- .../fancyshowcasesample/QueueActivity.kt | 13 +++-- .../RecyclerViewActivity.kt | 21 ++++--- .../fancyshowcasesample/SecondActivity.kt | 21 ++++--- 7 files changed, 79 insertions(+), 62 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7423bc4..27a7e6d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,6 +53,9 @@ android { kotlinOptions { jvmTarget = '1.8' } + buildFeatures { + viewBinding = true + } } dependencies { diff --git a/app/src/main/java/me/toptas/fancyshowcasesample/AnimatedActivity.kt b/app/src/main/java/me/toptas/fancyshowcasesample/AnimatedActivity.kt index 71595b7..d6ce116 100644 --- a/app/src/main/java/me/toptas/fancyshowcasesample/AnimatedActivity.kt +++ b/app/src/main/java/me/toptas/fancyshowcasesample/AnimatedActivity.kt @@ -22,25 +22,26 @@ import android.view.View import android.view.animation.AnimationUtils import android.widget.TextView -import kotlinx.android.synthetic.main.activity_main.* import me.toptas.fancyshowcase.FancyShowCaseQueue import me.toptas.fancyshowcase.FancyShowCaseView import me.toptas.fancyshowcase.listener.OnViewInflateListener +import me.toptas.fancyshowcasesample.databinding.ActivityAnimatedBinding class AnimatedActivity : BaseActivity() { - + private lateinit var binding: ActivityAnimatedBinding private lateinit var queue: FancyShowCaseQueue private lateinit var fancyView: FancyShowCaseView private lateinit var fancyView2: FancyShowCaseView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_animated) + binding = ActivityAnimatedBinding.inflate(layoutInflater) + setContentView(binding.root) fancyView = FancyShowCaseView.Builder(this) - .focusOn(btn_focus) + .focusOn(binding.btnFocus) .customView(R.layout.layout_animated_view, object : OnViewInflateListener { override fun onViewInflated(view: View) { setAnimatedContent(view, fancyView) @@ -49,7 +50,7 @@ class AnimatedActivity : BaseActivity() { .build() fancyView2 = FancyShowCaseView.Builder(this) - .focusOn(btn_focus2) + .focusOn(binding.btnFocus2) .customView(R.layout.layout_animated_view, object : OnViewInflateListener { override fun onViewInflated(view: View) { setAnimatedContent(view, fancyView2) @@ -57,7 +58,7 @@ class AnimatedActivity : BaseActivity() { }) .build() - btn_focus.setOnClickListener { + binding.btnFocus.setOnClickListener { queue = FancyShowCaseQueue().apply { add(fancyView) add(fancyView2) diff --git a/app/src/main/java/me/toptas/fancyshowcasesample/CustomQueueActivity.kt b/app/src/main/java/me/toptas/fancyshowcasesample/CustomQueueActivity.kt index baa98df..e1d11c7 100644 --- a/app/src/main/java/me/toptas/fancyshowcasesample/CustomQueueActivity.kt +++ b/app/src/main/java/me/toptas/fancyshowcasesample/CustomQueueActivity.kt @@ -20,14 +20,15 @@ import android.os.Bundle import android.util.Log import android.view.View -import kotlinx.android.synthetic.main.activity_queue.* import me.toptas.fancyshowcase.FancyShowCaseQueue import me.toptas.fancyshowcase.FancyShowCaseView import me.toptas.fancyshowcase.listener.DismissListener import me.toptas.fancyshowcase.listener.OnViewInflateListener +import me.toptas.fancyshowcasesample.databinding.ActivityQueueBinding class CustomQueueActivity : BaseActivity() { + private lateinit var binding: ActivityQueueBinding private lateinit var queue: FancyShowCaseQueue private var mClickListener: View.OnClickListener = View.OnClickListener { @@ -48,11 +49,12 @@ class CustomQueueActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_queue) + binding = ActivityQueueBinding.inflate(layoutInflater) + setContentView(binding.root) val fancyShowCaseView1 = FancyShowCaseView.Builder(this) .title("First Queue Item") - .focusOn(btn_queue_1) + .focusOn(binding.btnQueue1) .customView(R.layout.layout_my_custom_view, object : OnViewInflateListener { override fun onViewInflated(view: View) { view.findViewById(R.id.btn_action_1).setOnClickListener(mClickListener) @@ -64,7 +66,7 @@ class CustomQueueActivity : BaseActivity() { val fancyShowCaseView2 = FancyShowCaseView.Builder(this) .title("Second Queue Item") - .focusOn(btn_queue_2) + .focusOn(binding.btnQueue2) .customView(R.layout.layout_my_custom_view, object : OnViewInflateListener { override fun onViewInflated(view: View) { view.findViewById(R.id.btn_action_1).setOnClickListener(mClickListener) @@ -76,7 +78,7 @@ class CustomQueueActivity : BaseActivity() { val fancyShowCaseView3 = FancyShowCaseView.Builder(this) .title("Third Queue Item") - .focusOn(btn_queue_3!!) + .focusOn(binding.btnQueue3) .customView(R.layout.layout_my_custom_view, object : OnViewInflateListener { override fun onViewInflated(view: View) { view.findViewById(R.id.btn_action_1).setOnClickListener(mClickListener) diff --git a/app/src/main/java/me/toptas/fancyshowcasesample/MainActivity.kt b/app/src/main/java/me/toptas/fancyshowcasesample/MainActivity.kt index 1af6bad..e71736c 100644 --- a/app/src/main/java/me/toptas/fancyshowcasesample/MainActivity.kt +++ b/app/src/main/java/me/toptas/fancyshowcasesample/MainActivity.kt @@ -32,14 +32,15 @@ import android.widget.ImageView import android.widget.RelativeLayout import android.widget.Toast import androidx.core.content.res.ResourcesCompat -import kotlinx.android.synthetic.main.activity_main.* import me.toptas.fancyshowcase.FancyShowCaseView import me.toptas.fancyshowcase.FocusShape import me.toptas.fancyshowcase.listener.DismissListener import me.toptas.fancyshowcase.listener.OnViewInflateListener +import me.toptas.fancyshowcasesample.databinding.ActivityMainBinding class MainActivity : BaseActivity() { + private lateinit var binding: ActivityMainBinding private var mFancyShowCaseView: FancyShowCaseView? = null private var mClickListener: View.OnClickListener = View.OnClickListener { @@ -49,9 +50,10 @@ class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) - btn_simple.setOnClickListener { + binding.btnSimple.setOnClickListener { FancyShowCaseView.Builder(this) .title("No Focus") .build() @@ -59,7 +61,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView that focus on a vie - btn_focus.setOnClickListener { + binding.btnFocus.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title("Circle Focus on View") @@ -69,7 +71,7 @@ class MainActivity : BaseActivity() { // Set title with spanned val spanned: Spanned = Html.fromHtml("Spanned") - btn_spanned.setOnClickListener { + binding.btnSpanned.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title(spanned) @@ -81,7 +83,7 @@ class MainActivity : BaseActivity() { } // Set title size - btn_title_size.setOnClickListener { + binding.btnTitleSize.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title("Title size") @@ -91,7 +93,7 @@ class MainActivity : BaseActivity() { } // Set title typeface - btn_title_typeface.setOnClickListener { + binding.btnTitleTypeface.setOnClickListener { val typeface = ResourcesCompat.getFont(this, R.font.pacifico_regular) FancyShowCaseView.Builder(this) @@ -103,7 +105,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView with rounded rect focus shape - btn_rounded_rect.setOnClickListener { + binding.btnRoundedRect.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .focusShape(FocusShape.ROUNDED_RECTANGLE) @@ -115,7 +117,7 @@ class MainActivity : BaseActivity() { //Shows a FancyShowCaseView that focus on a view - btn_focus_dismiss_on_focus_area.setOnClickListener { + binding.btnFocusDismissOnFocusArea.setOnClickListener { if (FancyShowCaseView.isVisible(this)) { Toast.makeText(this, "Clickable button", Toast.LENGTH_SHORT).show() FancyShowCaseView.hideCurrent(this) @@ -130,7 +132,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView with rounded rect focus shape - btn_rounded_rect_dismiss_on_focus_area.setOnClickListener { + binding.btnRoundedRectDismissOnFocusArea.setOnClickListener { if (FancyShowCaseView.isVisible(this)) { Toast.makeText(this, "Clickable button", Toast.LENGTH_SHORT).show() FancyShowCaseView.hideCurrent(this) @@ -148,7 +150,7 @@ class MainActivity : BaseActivity() { } //Shows FancyShowCaseView with focusCircleRadiusFactor 1.5 and title gravity - btn_focus2.setOnClickListener { + binding.btnFocus2.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .focusCircleRadiusFactor(1.5) @@ -160,7 +162,7 @@ class MainActivity : BaseActivity() { } //Shows FancyShowCaseView at specific position (round rectangle shape) - btn_rect_position.setOnClickListener { + binding.btnRectPosition.setOnClickListener { FancyShowCaseView.Builder(this) .title("Focus on larger view") .focusRectAtPosition(260, 85, 480, 80) @@ -180,7 +182,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView that focuses on a larger view - btn_focus_rect_color.setOnClickListener { + binding.btnFocusRectColor.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title("Focus on larger view") @@ -194,7 +196,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView that has dashed rectangle border - btn_focus_dashed_rect.setOnClickListener { + binding.btnFocusDashedRect.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title("Focus with dashed line") @@ -209,7 +211,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView that has dashed circle border - btn_focus_dashed_circle.setOnClickListener { + binding.btnFocusDashedCircle.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title("Focus with dashed line") @@ -224,7 +226,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView with background color and title style - btn_background_color.setOnClickListener { + binding.btnBackgroundColor.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .backgroundColor(Color.parseColor("#AAff0000")) @@ -235,7 +237,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView with border color - btn_border_color.setOnClickListener { + binding.btnBorderColor.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title("Focus border color can be changed") @@ -247,7 +249,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView with custom enter, exit animations - btn_anim.setOnClickListener { + binding.btnAnim.setOnClickListener { val enterAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_in_top) val exitAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_out_bottom) @@ -274,7 +276,7 @@ class MainActivity : BaseActivity() { } //Shows a FancyShowCaseView view custom view inflation - btn_custom_view.setOnClickListener { + binding.btnCustomView.setOnClickListener { mFancyShowCaseView = FancyShowCaseView.Builder(this) .focusOn(it) .enableTouchOnFocusedView(true) @@ -298,11 +300,11 @@ class MainActivity : BaseActivity() { } - btn_custom_view2.setOnClickListener { + binding.btnCustomView2.setOnClickListener { startActivity(Intent(this, AnimatedActivity::class.java)) } - btn_no_anim.setOnClickListener { + binding.btnNoAnim.setOnClickListener { mFancyShowCaseView = FancyShowCaseView.Builder(this) .focusOn(it) .disableFocusAnimation() @@ -311,23 +313,23 @@ class MainActivity : BaseActivity() { } - btn_queue.setOnClickListener { + binding.btnQueue.setOnClickListener { startActivity(Intent(this, QueueActivity::class.java)) } - btn_custom_queue.setOnClickListener { + binding.btnCustomQueue.setOnClickListener { startActivity(Intent(this, CustomQueueActivity::class.java)) } - btn_another_activity.setOnClickListener { + binding.btnAnotherActivity.setOnClickListener { startActivity(Intent(this, SecondActivity::class.java)) } - btn_recycler_view.setOnClickListener { + binding.btnRecyclerView.setOnClickListener { startActivity(Intent(this, RecyclerViewActivity::class.java)) } - btn_scaled_view.setOnClickListener { + binding.btnScaledView.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title("Focus on Scaled View") @@ -335,7 +337,7 @@ class MainActivity : BaseActivity() { .show() } - btn_focus_delay.setOnClickListener { + binding.btnFocusDelay.setOnClickListener { FancyShowCaseView.Builder(this) .title("Focus with delay") .focusOn(it) @@ -344,7 +346,7 @@ class MainActivity : BaseActivity() { .show() } - btn_show_once.setOnClickListener { + binding.btnShowOnce.setOnClickListener { FancyShowCaseView.Builder(this) .focusOn(it) .title("Clean storage to see this again") diff --git a/app/src/main/java/me/toptas/fancyshowcasesample/QueueActivity.kt b/app/src/main/java/me/toptas/fancyshowcasesample/QueueActivity.kt index 40d64f4..c7761d2 100644 --- a/app/src/main/java/me/toptas/fancyshowcasesample/QueueActivity.kt +++ b/app/src/main/java/me/toptas/fancyshowcasesample/QueueActivity.kt @@ -19,31 +19,34 @@ package me.toptas.fancyshowcasesample import android.os.Bundle import android.widget.Toast -import kotlinx.android.synthetic.main.activity_queue.* import me.toptas.fancyshowcase.FancyShowCaseQueue import me.toptas.fancyshowcase.FancyShowCaseView import me.toptas.fancyshowcase.listener.OnCompleteListener +import me.toptas.fancyshowcasesample.databinding.ActivityQueueBinding class QueueActivity : BaseActivity() { + private lateinit var binding: ActivityQueueBinding + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_queue) + binding = ActivityQueueBinding.inflate(layoutInflater) + setContentView(binding.root) val fancyShowCaseView1 = FancyShowCaseView.Builder(this) .title("First Queue Item") - .focusOn(btn_queue_1) + .focusOn(binding.btnQueue1) .build() val fancyShowCaseView2 = FancyShowCaseView.Builder(this) .title("Second Queue Item") - .focusOn(btn_queue_2) + .focusOn(binding.btnQueue2) .build() val fancyShowCaseView3 = FancyShowCaseView.Builder(this) .title("Third Queue Item") - .focusOn(btn_queue_3) + .focusOn(binding.btnQueue3) .build() val queue = FancyShowCaseQueue() diff --git a/app/src/main/java/me/toptas/fancyshowcasesample/RecyclerViewActivity.kt b/app/src/main/java/me/toptas/fancyshowcasesample/RecyclerViewActivity.kt index f0efb2b..cea206f 100644 --- a/app/src/main/java/me/toptas/fancyshowcasesample/RecyclerViewActivity.kt +++ b/app/src/main/java/me/toptas/fancyshowcasesample/RecyclerViewActivity.kt @@ -19,18 +19,21 @@ package me.toptas.fancyshowcasesample import android.os.Bundle import android.view.View import java.util.ArrayList -import kotlinx.android.synthetic.main.activity_recycler_view.* import me.toptas.fancyshowcase.FancyShowCaseView import android.os.Build import android.view.ViewTreeObserver import androidx.recyclerview.widget.LinearLayoutManager +import me.toptas.fancyshowcasesample.databinding.ActivityRecyclerViewBinding class RecyclerViewActivity : BaseActivity() { + private lateinit var binding: ActivityRecyclerViewBinding + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_recycler_view) + binding = ActivityRecyclerViewBinding.inflate(layoutInflater) + setContentView(binding.root) val modelList = ArrayList() for (i in 0..24) { @@ -43,19 +46,19 @@ class RecyclerViewActivity : BaseActivity() { focus(v) }) - recyclerView.adapter = adapter + binding.recyclerView.adapter = adapter - recyclerView.layoutManager = layoutManager + binding.recyclerView.layoutManager = layoutManager - recyclerView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { + binding.recyclerView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { override fun onGlobalLayout() { - val width = recyclerView.width - val height = recyclerView.height + val width = binding.recyclerView.width + val height = binding.recyclerView.height if (width > 0 && height > 0) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - recyclerView.viewTreeObserver.removeOnGlobalLayoutListener(this) + binding.recyclerView.viewTreeObserver.removeOnGlobalLayoutListener(this) } else { - recyclerView.viewTreeObserver.removeGlobalOnLayoutListener(this) + binding.recyclerView.viewTreeObserver.removeGlobalOnLayoutListener(this) } } diff --git a/app/src/main/java/me/toptas/fancyshowcasesample/SecondActivity.kt b/app/src/main/java/me/toptas/fancyshowcasesample/SecondActivity.kt index 2918d3e..0bde0cb 100644 --- a/app/src/main/java/me/toptas/fancyshowcasesample/SecondActivity.kt +++ b/app/src/main/java/me/toptas/fancyshowcasesample/SecondActivity.kt @@ -21,27 +21,30 @@ import android.view.Menu import android.view.MenuItem import android.view.View -import kotlinx.android.synthetic.main.activity_second.* import me.toptas.fancyshowcase.FancyShowCaseView +import me.toptas.fancyshowcasesample.databinding.ActivitySecondBinding class SecondActivity : BaseActivity() { + private lateinit var binding: ActivitySecondBinding + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_second) - setSupportActionBar(toolbar) + binding = ActivitySecondBinding.inflate(layoutInflater) + setContentView(binding.root) + setSupportActionBar(binding.toolbar) focusOnButton() - button1.setOnClickListener { + binding.button1.setOnClickListener { focusOnButton() } - button2.setOnClickListener { - if (toolbar.visibility == View.VISIBLE) { - toolbar.visibility = View.GONE + binding.button2.setOnClickListener { + if (binding.toolbar.visibility == View.VISIBLE) { + binding.toolbar.visibility = View.GONE } else { - toolbar.visibility = View.VISIBLE + binding.toolbar.visibility = View.VISIBLE } } } @@ -49,7 +52,7 @@ class SecondActivity : BaseActivity() { private fun focusOnButton() { FancyShowCaseView.Builder(this@SecondActivity) - .focusOn(button1) + .focusOn(binding.button1) .title("Focus a view") .fitSystemWindows(true) .build()