From 6374c5c643ffe3922dbddfb7c48b5f7d691e0aea Mon Sep 17 00:00:00 2001 From: dmorozov Date: Wed, 21 Sep 2022 13:56:10 +0300 Subject: [PATCH 1/2] Update project - Update gradle version - Fix gradle issues - Update compileSdkVersion - Update targetSdkVersion - Update buildToolsVersion - Migrate to AndroidX - Migrate Kotlin synthetics to ViewBinding --- build.gradle | 8 ++--- gradle.properties | 5 +++ gradle/wrapper/gradle-wrapper.properties | 6 ++-- lib/build.gradle | 15 +++++---- .../lib/ContextMenuDialogFragment.kt | 33 +++++++++++-------- .../yalantis/contextmenu/lib/WrapperView.kt | 2 +- .../contextmenu/lib/extensions/Animator.kt | 8 ++--- .../contextmenu/lib/extensions/Context.kt | 6 ++-- .../contextmenu/lib/extensions/View.kt | 8 ++--- sample/build.gradle | 19 ++++++----- sample/src/main/AndroidManifest.xml | 3 +- .../contextmenu/sample/SampleActivity.kt | 23 +++++++------ .../src/main/res/layout/activity_sample.xml | 8 +++-- .../main/res/layout/scrollable_content.xml | 4 +-- sample/src/main/res/layout/toolbar.xml | 6 ++-- 15 files changed, 87 insertions(+), 67 deletions(-) diff --git a/build.gradle b/build.gradle index f62da34..f4c5b86 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,13 @@ buildscript { - ext.kotlin_version = '1.3.20' + ext.kotlin_version = '1.7.10' repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0' + classpath 'com.android.tools.build:gradle:7.3.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -15,7 +15,7 @@ buildscript { allprojects { repositories { google() - jcenter() + mavenCentral() maven { url 'https://jitpack.io' } } } diff --git a/gradle.properties b/gradle.properties index f04974c..9bffdee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,6 +17,11 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +android.useAndroidX=true +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official + VERSION_NAME=1.1.0 VERSION_CODE=10 GROUP=com.yalantis diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d7958b4..8a22ed8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Jan 15 12:30:17 EET 2019 +#Wed Sep 21 13:04:03 EEST 2022 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip \ No newline at end of file +zipStoreBase=GRADLE_USER_HOME diff --git a/lib/build.gradle b/lib/build.gradle index 96b49f1..7206ab1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,20 +1,23 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 28 + compileSdkVersion 33 defaultConfig { minSdkVersion 19 - targetSdkVersion 28 + targetSdkVersion 33 versionCode Integer.parseInt(project.VERSION_CODE) versionName VERSION_NAME } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + buildFeatures { + viewBinding true } } @@ -23,5 +26,5 @@ dependencies { implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'com.android.support:appcompat-v7:28.0.0' + implementation "androidx.appcompat:appcompat:1.5.1" } \ No newline at end of file diff --git a/lib/src/main/java/com/yalantis/contextmenu/lib/ContextMenuDialogFragment.kt b/lib/src/main/java/com/yalantis/contextmenu/lib/ContextMenuDialogFragment.kt index d7964f6..4ee0261 100644 --- a/lib/src/main/java/com/yalantis/contextmenu/lib/ContextMenuDialogFragment.kt +++ b/lib/src/main/java/com/yalantis/contextmenu/lib/ContextMenuDialogFragment.kt @@ -2,17 +2,18 @@ package com.yalantis.contextmenu.lib import android.os.Bundle import android.os.Handler -import android.support.v4.app.DialogFragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.WindowManager +import androidx.fragment.app.DialogFragment +import com.yalantis.contextmenu.lib.databinding.FragmentMenuBinding import com.yalantis.contextmenu.lib.extensions.backgroundColorAppear import com.yalantis.contextmenu.lib.extensions.backgroundColorDisappear -import kotlinx.android.synthetic.main.fragment_menu.* open class ContextMenuDialogFragment : DialogFragment() { + private lateinit var binding: FragmentMenuBinding var menuItemClickListener: (view: View, position: Int) -> Unit = { _, _ -> } var menuItemLongClickListener: (view: View, position: Int) -> Unit = { _, _ -> } @@ -29,10 +30,14 @@ open class ContextMenuDialogFragment : DialogFragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? = inflater.inflate(R.layout.fragment_menu, container, false)?.apply { - fitsSystemWindows = menuParams.isFitsSystemWindow - (this as ViewGroup).clipToPadding = menuParams.isClipToPadding - dialog.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) + ): View? { + binding = FragmentMenuBinding.inflate(layoutInflater, container, false) + binding.root.apply { + fitsSystemWindows = menuParams.isFitsSystemWindow + (this as ViewGroup).clipToPadding = menuParams.isClipToPadding + dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) + } + return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -42,7 +47,7 @@ open class ContextMenuDialogFragment : DialogFragment() { dropDownMenuAdapter.menuToggle() }, menuParams.animationDelay) - wrapperView.apply { + binding.wrapperView.apply { backgroundColorAppear(menuParams.backgroundColorAnimationDuration) show(menuParams.gravity) @@ -59,12 +64,12 @@ open class ContextMenuDialogFragment : DialogFragment() { private fun initDropDownMenuAdapter() { activity?.let { dropDownMenuAdapter = MenuAdapter( - it, - wrapperView.wrapperButtons, - wrapperView.wrapperText, - menuParams.menuObjects, - menuParams.actionBarSize, - menuParams.gravity + it, + binding.wrapperView.wrapperButtons, + binding.wrapperView.wrapperText, + menuParams.menuObjects, + menuParams.actionBarSize, + menuParams.gravity ).apply { setAnimationDuration(menuParams.animationDuration) @@ -88,7 +93,7 @@ open class ContextMenuDialogFragment : DialogFragment() { } private fun close() { - wrapperView.backgroundColorDisappear(menuParams.backgroundColorAnimationDuration) { + binding.wrapperView.backgroundColorDisappear(menuParams.backgroundColorAnimationDuration) { Handler().postDelayed({ dismissAllowingStateLoss() }, menuParams.animationDelay) diff --git a/lib/src/main/java/com/yalantis/contextmenu/lib/WrapperView.kt b/lib/src/main/java/com/yalantis/contextmenu/lib/WrapperView.kt index e482335..70bf801 100644 --- a/lib/src/main/java/com/yalantis/contextmenu/lib/WrapperView.kt +++ b/lib/src/main/java/com/yalantis/contextmenu/lib/WrapperView.kt @@ -1,13 +1,13 @@ package com.yalantis.contextmenu.lib import android.content.Context -import android.support.v4.view.ViewCompat import android.util.AttributeSet import android.view.Gravity import android.widget.FrameLayout import android.widget.LinearLayout import android.widget.RelativeLayout import android.widget.ScrollView +import androidx.core.view.ViewCompat import com.yalantis.contextmenu.lib.extensions.getDimension open class WrapperView @JvmOverloads constructor( diff --git a/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/Animator.kt b/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/Animator.kt index b40d492..1056bde 100644 --- a/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/Animator.kt +++ b/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/Animator.kt @@ -4,19 +4,19 @@ import android.animation.Animator internal fun Animator.onAnimationEnd(onAnimationEnd: (Animator?) -> Unit) { this.addListener(object : Animator.AnimatorListener { - override fun onAnimationRepeat(animation: Animator?) { + override fun onAnimationRepeat(animation: Animator) { // do nothing } - override fun onAnimationEnd(animation: Animator?) { + override fun onAnimationEnd(animation: Animator) { onAnimationEnd(animation) } - override fun onAnimationCancel(animation: Animator?) { + override fun onAnimationCancel(animation: Animator) { // do nothing } - override fun onAnimationStart(animation: Animator?) { + override fun onAnimationStart(animation: Animator) { // do nothing } }) diff --git a/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/Context.kt b/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/Context.kt index f717860..772ccc4 100644 --- a/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/Context.kt +++ b/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/Context.kt @@ -4,13 +4,13 @@ import android.content.Context import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Build -import android.support.annotation.ColorRes -import android.support.annotation.DimenRes -import android.support.v4.content.ContextCompat import android.view.Gravity import android.view.View import android.view.ViewGroup import android.widget.* +import androidx.annotation.ColorRes +import androidx.annotation.DimenRes +import androidx.core.content.ContextCompat import com.yalantis.contextmenu.lib.MenuObject import com.yalantis.contextmenu.lib.R diff --git a/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/View.kt b/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/View.kt index 3b52deb..ebae44d 100644 --- a/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/View.kt +++ b/lib/src/main/java/com/yalantis/contextmenu/lib/extensions/View.kt @@ -3,8 +3,8 @@ package com.yalantis.contextmenu.lib.extensions import android.animation.AnimatorSet import android.animation.ArgbEvaluator import android.animation.ObjectAnimator -import android.support.annotation.ColorRes import android.view.View +import androidx.annotation.ColorRes import com.yalantis.contextmenu.lib.MenuGravity import com.yalantis.contextmenu.lib.R @@ -93,9 +93,9 @@ internal fun View.fadeOutSet(x: Float, gravity: MenuGravity): AnimatorSet = Anim } internal fun View.colorAnimation( - duration: Long, - @ColorRes startColorResId: Int, - @ColorRes endColorResId: Int + duration: Long, + @ColorRes startColorResId: Int, + @ColorRes endColorResId: Int ): ObjectAnimator = ObjectAnimator.ofObject( this, diff --git a/sample/build.gradle b/sample/build.gradle index 77f7676..fd759a5 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,22 +1,25 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 28 + compileSdkVersion 33 defaultConfig { applicationId "com.yalantis.contextmenu.sample" minSdkVersion 19 - targetSdkVersion 28 + targetSdkVersion 33 versionCode Integer.parseInt(project.VERSION_CODE) versionName VERSION_NAME vectorDrawables.useSupportLibrary = true } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + buildFeatures { + viewBinding true } } @@ -25,8 +28,8 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation "androidx.appcompat:appcompat:1.5.1" + implementation "androidx.constraintlayout:constraintlayout:2.1.4" - implementation 'com.github.yalantis:context-menu.android:1.1.4' + implementation "com.github.yalantis:context-menu.android:1.1.4" } \ No newline at end of file diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index 25164f7..01cc4a8 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -14,7 +14,8 @@ + android:screenOrientation="portrait" + android:exported="true"> diff --git a/sample/src/main/java/com/yalantis/contextmenu/sample/SampleActivity.kt b/sample/src/main/java/com/yalantis/contextmenu/sample/SampleActivity.kt index 507aee3..17c619c 100644 --- a/sample/src/main/java/com/yalantis/contextmenu/sample/SampleActivity.kt +++ b/sample/src/main/java/com/yalantis/contextmenu/sample/SampleActivity.kt @@ -3,23 +3,24 @@ package com.yalantis.contextmenu.sample import android.graphics.BitmapFactory import android.graphics.drawable.BitmapDrawable import android.os.Bundle -import android.support.v7.app.AppCompatActivity import android.view.Menu import android.view.MenuItem import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity import com.yalantis.contextmenu.R +import com.yalantis.contextmenu.databinding.ActivitySampleBinding import com.yalantis.contextmenu.lib.ContextMenuDialogFragment import com.yalantis.contextmenu.lib.MenuObject import com.yalantis.contextmenu.lib.MenuParams -import kotlinx.android.synthetic.main.toolbar.* class SampleActivity : AppCompatActivity() { + private val binding: ActivitySampleBinding by lazy { ActivitySampleBinding.inflate(layoutInflater) } private lateinit var contextMenuDialogFragment: ContextMenuDialogFragment override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_sample) + setContentView(binding.root) initToolbar() initMenuFragment() @@ -30,12 +31,10 @@ class SampleActivity : AppCompatActivity() { return true } - override fun onOptionsItemSelected(item: MenuItem?): Boolean { - item?.let { - when (it.itemId) { - R.id.context_menu -> { - showContextMenuDialogFragment() - } + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.context_menu -> { + showContextMenuDialogFragment() } } @@ -51,7 +50,7 @@ class SampleActivity : AppCompatActivity() { } private fun initToolbar() { - setSupportActionBar(toolbar) + setSupportActionBar(binding.toolbar.rootView) supportActionBar?.apply { setHomeButtonEnabled(true) @@ -59,12 +58,12 @@ class SampleActivity : AppCompatActivity() { setDisplayShowTitleEnabled(false) } - toolbar.apply { + binding.toolbar.rootView.apply { setNavigationIcon(R.drawable.ic_arrow_back) setNavigationOnClickListener { onBackPressed() } } - tvToolbarTitle.text = "Samantha" + binding.toolbar.tvToolbarTitle.text = "Samantha" } /** diff --git a/sample/src/main/res/layout/activity_sample.xml b/sample/src/main/res/layout/activity_sample.xml index 1e4d827..2eb9a3c 100644 --- a/sample/src/main/res/layout/activity_sample.xml +++ b/sample/src/main/res/layout/activity_sample.xml @@ -5,8 +5,12 @@ android:background="@color/menu_item_background" android:orientation="vertical"> - + - + \ No newline at end of file diff --git a/sample/src/main/res/layout/scrollable_content.xml b/sample/src/main/res/layout/scrollable_content.xml index b7505cf..75b5a1e 100644 --- a/sample/src/main/res/layout/scrollable_content.xml +++ b/sample/src/main/res/layout/scrollable_content.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" android:background="@color/menu_item_background"> - @@ -50,6 +50,6 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvTitle" /> - + \ No newline at end of file diff --git a/sample/src/main/res/layout/toolbar.xml b/sample/src/main/res/layout/toolbar.xml index 34893a8..1d3de67 100644 --- a/sample/src/main/res/layout/toolbar.xml +++ b/sample/src/main/res/layout/toolbar.xml @@ -1,7 +1,7 @@ - - \ No newline at end of file + \ No newline at end of file From d1399590a6b363447fe3a5feeddb4864bbf1c64f Mon Sep 17 00:00:00 2001 From: dmorozov Date: Thu, 22 Sep 2022 13:29:55 +0300 Subject: [PATCH 2/2] Update library version - Update library version - Update README.md --- README.md | 7 ++++++- gradle.properties | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 05ad3c6..3c7dc8d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Add it in your root build.gradle at the end of repositories: Add the dependency ``` dependencies { - implementation 'com.github.Yalantis:Context-Menu.Android:1.1.4' + implementation 'com.github.Yalantis:Context-Menu.Android:1.1.5' } ``` #### 2. Create list of `MenuObject`, which consists of icon or icon and description. @@ -185,6 +185,11 @@ To stay `Context Menu` below Status Bar set `fitSystemWindows` to true and `clip # Changelog +### Version: 1.1.5 + + * updated library dependencies + * migrated to AndroidX + ### Version: 1.1.4 * added background color animation diff --git a/gradle.properties b/gradle.properties index 9bffdee..37e1f5e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,8 +22,8 @@ android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official -VERSION_NAME=1.1.0 -VERSION_CODE=10 +VERSION_NAME=1.1.5 +VERSION_CODE=11 GROUP=com.yalantis POM_DESCRIPTION=Android Library to display awesome context menu