diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml
new file mode 100644
index 0000000..4a53bee
--- /dev/null
+++ b/.idea/AndroidProjectSystem.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml
new file mode 100644
index 0000000..8811c8f
--- /dev/null
+++ b/.idea/appInsightsSettings.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
new file mode 100644
index 0000000..9e9ba09
--- /dev/null
+++ b/.idea/caches/deviceStreaming.xml
@@ -0,0 +1,607 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..b86273d
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
new file mode 100644
index 0000000..b268ef3
--- /dev/null
+++ b/.idea/deploymentTargetSelector.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index fc9576b..0975d1c 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,10 +1,12 @@
+
-
+
+
@@ -12,7 +14,6 @@
-
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 0000000..f8467b4
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/migrations.xml b/.idea/migrations.xml
new file mode 100644
index 0000000..f8051a6
--- /dev/null
+++ b/.idea/migrations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13c4629..1ffae54 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,26 +5,45 @@
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 593b872..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
index 7f68460..72f00ed 100644
--- a/.idea/runConfigurations.xml
+++ b/.idea/runConfigurations.xml
@@ -3,6 +3,14 @@
+
+
+
+
+
+
+
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 5fc0921..8d3e42f 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -6,6 +6,6 @@
-
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 70317bc..80aab62 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# BubbleShowCase - Android
- [  ](https://bintray.com/laboratorioec/Laboratorio-apps/BubbleShowCase/_latestVersion)
+ [ [Download]](https://bintray.com/laboratorioec/Laboratorio-apps/BubbleShowCase/_latestVersion)
[]( https://android-arsenal.com/details/1/7119 )
BubbleShowCase is an elegant and simple framework developed in Kotlin (usable also in Java) that let you to use informative bubbles to help your users pointing out different features of your application or in your App onboarding. The basic use of the framework consists on a target element passed as input which will be highlighted over a translucent background and pointed out by a customizable bubble.
@@ -8,11 +8,15 @@ BubbleShowCase is an elegant and simple framework developed in Kotlin (usable al
## Getting started
-Add the library into your proyect is really easy, you just need to add this line in dependencies block in your app Gradle:
+Add the library into your project is really easy,
+1. Add the maven jitpack dependency to your project build.gradle repositories block
```groovy
-implementation 'com.elconfidencial.bubbleshowcase:bubbleshowcase:LATEST_VERSION'
+maven { url 'https://jitpack.io' }
+```
+2. Then add the repo to your dependencies in your app build.gradle
+```groovy
+implementation 'com.github.musicmeetscode:BubbleShowCase-Android:v2.0.2'
```
-**NOTE:** You can check the LATEST_VERSION in the version badge at the top of this file.
## Usage
### Basic sample
diff --git a/app/build.gradle b/app/build.gradle
index 70a71c1..a3912e7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,14 +2,14 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-android-extensions'
+//apply plugin: 'kotlin-android-extensions'
android {
- compileSdkVersion 27
+ compileSdkVersion 33
defaultConfig {
applicationId "com.elconfidencial.bubbleshowcase"
minSdkVersion 16
- targetSdkVersion 27
+ targetSdkVersion 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -20,6 +20,18 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
+ kotlinOptions {
+ jvmTarget = '11' // ✅ valid
+ }
+ viewBinding {
+ enabled = true
+ }
+
+ namespace "com.elconfidencial.bubbleshowcase"
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
+ }
}
dependencies {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c1d6ac5..11bb12c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -10,6 +10,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
diff --git a/app/src/main/java/com/elconfidencial/bubbleshowcase/MainActivity.kt b/app/src/main/java/com/elconfidencial/bubbleshowcase/MainActivity.kt
index a8d2e5e..0893bce 100644
--- a/app/src/main/java/com/elconfidencial/bubbleshowcase/MainActivity.kt
+++ b/app/src/main/java/com/elconfidencial/bubbleshowcase/MainActivity.kt
@@ -3,28 +3,26 @@ package com.elconfidencial.bubbleshowcase
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v4.content.ContextCompat
-import android.support.v7.view.menu.ActionMenuItemView
-import android.view.Menu
-import android.view.MenuItem
import android.widget.Toast
-import kotlinx.android.synthetic.main.activity_main.*
+import com.elconfidencial.bubbleshowcase.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
+ private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
+ setContentView(binding.root)
setUpListeners()
}
private fun setUpListeners(){
- buttonSimpleShowCase.setOnClickListener { getSimpleShowCaseBuilder().show() }
- buttonColorShowCase.setOnClickListener { getCustomColorShowCaseBuilder().show() }
- buttonTextSizeShowCase.setOnClickListener { getTextSizeShowCaseBuilder().show() }
- buttonArrowLeftShowCase.setOnClickListener { getArrowLeftShowCaseBuilder().show() }
- buttonArrowRightShowCase.setOnClickListener { getArrowRightShowCaseBuilder().show() }
- buttonEventListener.setOnClickListener { getListenerShowCaseBuilder().show() }
- buttonSequence.setOnClickListener { getSequence().show() }
+ binding. buttonSimpleShowCase.setOnClickListener { getSimpleShowCaseBuilder().show() }
+ binding. buttonColorShowCase.setOnClickListener { getCustomColorShowCaseBuilder().show() }
+ binding.buttonTextSizeShowCase.setOnClickListener { getTextSizeShowCaseBuilder().show() }
+ binding. buttonArrowLeftShowCase.setOnClickListener { getArrowLeftShowCaseBuilder().show() }
+ binding.buttonArrowRightShowCase.setOnClickListener { getArrowRightShowCaseBuilder().show() }
+ binding. buttonEventListener.setOnClickListener { getListenerShowCaseBuilder().show() }
+ binding. buttonSequence.setOnClickListener { getSequence().show() }
}
//SHOW CASES GETTERS
@@ -33,7 +31,7 @@ class MainActivity : AppCompatActivity() {
return BubbleShowCaseBuilder(this)
.title("Welcome!!!")
.description("This is a simple BubbleShowCase with default values.")
- .targetView(buttonSimpleShowCase)
+ .targetView(binding.buttonSimpleShowCase)
}
private fun getCustomColorShowCaseBuilder(): BubbleShowCaseBuilder{
@@ -44,7 +42,7 @@ class MainActivity : AppCompatActivity() {
.image(ContextCompat.getDrawable(this, R.drawable.ic_color)!!)
.closeActionImage(ContextCompat.getDrawable(this, R.drawable.ic_close_black)!!)
.textColor(ContextCompat.getColor(this, R.color.colorBlack))
- .targetView(buttonColorShowCase)
+ .targetView(binding.buttonColorShowCase)
}
private fun getTextSizeShowCaseBuilder(): BubbleShowCaseBuilder{
@@ -56,7 +54,7 @@ class MainActivity : AppCompatActivity() {
.titleTextSize(18)
.descriptionTextSize(16)
.closeActionImage(null)
- .targetView(buttonTextSizeShowCase)
+ .targetView(binding.buttonTextSizeShowCase)
}
private fun getArrowLeftShowCaseBuilder(): BubbleShowCaseBuilder{
@@ -65,7 +63,7 @@ class MainActivity : AppCompatActivity() {
.description("You only have to specify in which side you want the arrow, and the bubble will be located depending on it.")
.arrowPosition(BubbleShowCase.ArrowPosition.LEFT)
.backgroundColor(ContextCompat.getColor(this, R.color.colorRed))
- .targetView(buttonArrowLeftShowCase)
+ .targetView(binding.buttonArrowLeftShowCase)
}
private fun getArrowRightShowCaseBuilder(): BubbleShowCaseBuilder{
@@ -73,7 +71,7 @@ class MainActivity : AppCompatActivity() {
.title("Arrow set on right side this time :)")
.arrowPosition(BubbleShowCase.ArrowPosition.RIGHT)
.backgroundColor(ContextCompat.getColor(this, R.color.colorPink))
- .targetView(buttonArrowRightShowCase)
+ .targetView(binding.buttonArrowRightShowCase)
}
@@ -81,7 +79,7 @@ class MainActivity : AppCompatActivity() {
return BubbleShowCaseBuilder(this)
.title("Listen user actions!")
.description("You can detect when the user interacts with the different view elements to act consequently.")
- .backgroundColor(ContextCompat.getColor(this, R.color.colorOrange))
+ .backgroundColor(ContextCompat.getColor(this, com.elconfidencial.bubbleshowcase.R.color.colorOrange))
.image(ContextCompat.getDrawable(this, R.drawable.ic_sentiment_satisfied)!!)
.listener(object : BubbleShowCaseListener{
override fun onBubbleClick(bubbleShowCase: BubbleShowCase) {
@@ -100,7 +98,7 @@ class MainActivity : AppCompatActivity() {
Toast.makeText(this@MainActivity, "OnClose", Toast.LENGTH_SHORT).show()
}
})
- .targetView(buttonEventListener)
+ .targetView(binding.buttonEventListener)
}
private fun getSequence(): BubbleShowCaseSequence{
diff --git a/bubbleshowcase/build.gradle b/bubbleshowcase/build.gradle
index e95061c..7d10a82 100644
--- a/bubbleshowcase/build.gradle
+++ b/bubbleshowcase/build.gradle
@@ -1,21 +1,19 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-android-extensions'
-apply plugin: 'com.github.dcendents.android-maven'
-apply plugin: 'com.jfrog.bintray'
+//apply plugin: 'kotlin-android-extensions'
+//apply plugin: 'com.github.dcendents.android-maven'
+//apply plugin: 'com.jfrog.bintray'
apply plugin: 'org.jetbrains.dokka'
-apply plugin: 'maven-publish'
-
+//apply plugin: 'maven-publish'
android {
- compileSdkVersion 26
-
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 16
- targetSdkVersion 26
+ targetSdkVersion 33
versionCode 1
versionName "1.0"
@@ -29,7 +27,14 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
-
+ kotlinOptions {
+ jvmTarget = '11' // ✅ valid
+ }
+ namespace "com.elconfidencial.bubbleshowcase"
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
+ }
}
dokka {
@@ -39,7 +44,7 @@ dokka {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
@@ -51,4 +56,4 @@ repositories {
}
-apply from: 'deploy.gradle'
+//apply from: 'deploy.gradle'
diff --git a/bubbleshowcase/deploy.gradle b/bubbleshowcase/deploy.gradle
index cbf8cc6..7ccd06f 100644
--- a/bubbleshowcase/deploy.gradle
+++ b/bubbleshowcase/deploy.gradle
@@ -1,6 +1,6 @@
-apply plugin: 'com.github.dcendents.android-maven'
-apply plugin: 'com.jfrog.bintray'
-apply from: 'keystore.gradle'
+//apply plugin: 'com.github.dcendents.android-maven'
+//apply plugin: 'com.jfrog.bintray'
+//apply from: 'keystore.gradle'
//This file was created following instructions from: https://notes.devlabs.bg/beginners-guide-for-publishing-a-kotlin-library-to-jcenter-41272bfc214
@@ -13,32 +13,32 @@ ext{
version = libraryVersion
group = groupId
-bintray{
- user = 'laboratorioec'
- key = bintray_api_key //Defined in keystore.gradle file
- configurations = ['archives']
- publish = true
- override = true
- pkg {
- repo = "Laboratorio-apps"
- name = "BubbleShowCase"
- version {
- name = libraryVersion
- }
- }
-}
+//bintray{
+// user = 'laboratorioec'
+// key = bintray_api_key //Defined in keystore.gradle file
+// configurations = ['archives']
+// publish = true
+// override = true
+// pkg {
+// repo = "Laboratorio-apps"
+// name = "BubbleShowCase"
+// version {
+// name = libraryVersion
+// }
+// }
+//}
-install {
- repositories.mavenInstaller {
- pom.project {
- packaging 'aar'
- groupId groupId
- artifactId artifactId
- version libraryVersion
- name artifactId
- }
- }
-}
+//install {
+// repositories.mavenInstaller {
+// pom.project {
+// packaging 'aar'
+// groupId groupId
+// artifactId artifactId
+// version libraryVersion
+// name artifactId
+// }
+// }
+//}
if (project.hasProperty("kotlin")) { //Kotlin libraries
task sourcesJar(type: Jar) {
diff --git a/bubbleshowcase/src/main/AndroidManifest.xml b/bubbleshowcase/src/main/AndroidManifest.xml
index ba35b60..a822177 100644
--- a/bubbleshowcase/src/main/AndroidManifest.xml
+++ b/bubbleshowcase/src/main/AndroidManifest.xml
@@ -1,2 +1 @@
-
+
diff --git a/build.gradle b/build.gradle
index f88a8d6..841bd45 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,18 +1,18 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- ext.kotlin_version = '1.2.61'
+ ext.kotlin_version = '1.9.10'
ext.dokka_version = '0.9.17'
repositories {
google()
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.1'
+ classpath 'com.android.tools.build:gradle:8.9.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
//Maven plugins
- classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
+// classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath "org.jetbrains.dokka:dokka-gradle-plugin:${dokka_version}"
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index cae88ba..ef2a70a 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Sep 04 15:24:44 CEST 2018
+#Wed Apr 16 12:56:45 EAT 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip