diff --git a/.travis.yml b/.travis.yml
index b1f4b3a..928a5b2 100755
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,31 +1,52 @@
language: android
+jdk: oraclejdk8
+
+env:
+ global:
+ - ANDROID_API_LEVEL=30
+ - ANDROID_BUILD_TOOLS_VERSION=30.0.2
+
+cache:
+ directories:
+ - $HOME/.gradle/caches/
+ - $HOME/.gradle/wrapper/
branches:
only:
- master
android:
- components:
- # Uncomment the lines below if you want to
- # use the latest revision of Android SDK Tools
- - platform-tools
- - tools
+ licenses:
+ - android-sdk-preview-license-.+
+ - android-sdk-license-.+
+ - google-gdk-license-.+
+ components:
+ - tools
+ - platform-tools
# The BuildTools version used by your project
- - build-tools-29.0.2
-
+ - build-tools-$ANDROID_BUILD_TOOLS_VERSION
# The SDK version used to compile your project
- - android-29
+ - android-$ANDROID_API_LEVEL
+ # Additional components
+ - extra-google-google_play_services
+ - extra-google-m2repository
+ - extra-android-m2repository
+ - addon-google_apis-google-$ANDROID_API_LEVEL
+ # Android emulator
+ - android-22
+ - sys-img-armeabi-v7a-android-22
before_install:
- - yes | sdkmanager "platforms;android-29"
+ - yes | sdkmanager "platforms;android-30"
+ - yes | sdkmanager "build-tools;30.0.2"
before_script:
- - chmod +x gradlew
- - mkdir "$ANDROID_HOME/licenses" || true
- - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
- - yes | sdkmanager --update
- - yes | sdkmanager --licenses
+ # Launch emulator before the execution
+ - echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
+ - emulator -avd test -no-audio -no-window &
+ - android-wait-for-emulator
+ - adb shell input keyevent 82 &
+ - "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | sudo bash"
script: ./gradlew build assembleDebug
diff --git a/build.gradle b/build.gradle
index 64cc754..83b0508 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,17 +1,12 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
buildscript {
- ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
}
- dependencies {
- classpath 'com.android.tools.build:gradle:3.5.1'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
+ dependencies {
+ classpath 'com.android.tools.build:gradle:4.1.0'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10"
}
}
@@ -22,15 +17,6 @@ allprojects {
}
}
-repositories {
- flatDir {
- dirs 'libs'
- }
-
- maven { url "https://nexus.wit-software.com/repository/releases/" }
- maven { url "https://nexus.wit-software.com/repository/snapshots/" }
-}
-
task clean(type: Delete) {
delete rootProject.buildDir
}
diff --git a/demo/build.gradle b/demo/build.gradle
index b598c64..baf9113 100644
--- a/demo/build.gradle
+++ b/demo/build.gradle
@@ -3,12 +3,12 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
- compileSdkVersion 29
+ compileSdkVersion 30
defaultConfig {
applicationId "com.andrefrsousa.supertoolbar.demo"
minSdkVersion 16
- targetSdkVersion 29
+ targetSdkVersion 30
versionCode 1
versionName "1.0"
}
@@ -17,8 +17,7 @@ android {
dependencies {
implementation project(path: ':lib')
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- implementation 'androidx.appcompat:appcompat:1.1.0'
- implementation 'androidx.recyclerview:recyclerview:1.0.0'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
}
diff --git a/demo/src/main/res/layout/list_item.xml b/demo/src/main/res/layout/list_item.xml
index a1f5cf0..58297f8 100644
--- a/demo/src/main/res/layout/list_item.xml
+++ b/demo/src/main/res/layout/list_item.xml
@@ -5,9 +5,9 @@
+ android:padding="8dp"
+ android:text="Hello World!" />
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ca9d628..0127388 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,6 @@
+#Thu Oct 22 08:45:56 WEST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
diff --git a/lib/build.gradle b/lib/build.gradle
index f585238..cbc183c 100644
--- a/lib/build.gradle
+++ b/lib/build.gradle
@@ -3,11 +3,11 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
- compileSdkVersion 29
+ compileSdkVersion 30
defaultConfig {
minSdkVersion 16
- targetSdkVersion 29
+ targetSdkVersion 30
versionCode 1
versionName "1.0.0"
}
@@ -19,13 +19,21 @@ android {
}
}
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_1_8.toString()
+ }
+
+ buildFeatures {
+ viewBinding true
+ }
}
dependencies {
- // Kotlin
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
-
- // Support libraries
- implementation 'androidx.appcompat:appcompat:1.1.0'
- implementation 'com.google.android.material:material:1.0.0'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'com.google.android.material:material:1.2.1'
}
diff --git a/lib/src/main/java/com/andrefrsousa/supertoolbar/KExtensions.kt b/lib/src/main/java/com/andrefrsousa/supertoolbar/KExtensions.kt
deleted file mode 100644
index 0de9ac6..0000000
--- a/lib/src/main/java/com/andrefrsousa/supertoolbar/KExtensions.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2018 André Sousa
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package com.andrefrsousa.supertoolbar
-
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-//region VIEW
-
-internal fun ViewGroup.inflate(layoutId: Int): View {
- return LayoutInflater.from(context).inflate(layoutId, this, false)
-}
-
-//endregion
\ No newline at end of file
diff --git a/lib/src/main/java/com/andrefrsousa/supertoolbar/SuperToolbar.kt b/lib/src/main/java/com/andrefrsousa/supertoolbar/SuperToolbar.kt
index 1802022..b5d5710 100644
--- a/lib/src/main/java/com/andrefrsousa/supertoolbar/SuperToolbar.kt
+++ b/lib/src/main/java/com/andrefrsousa/supertoolbar/SuperToolbar.kt
@@ -28,16 +28,17 @@ import android.graphics.Typeface
import android.os.Build
import android.util.AttributeSet
import android.view.Gravity
+import android.view.LayoutInflater
import android.view.animation.DecelerateInterpolator
-import androidx.appcompat.widget.AppCompatTextView
import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
+import com.andrefrsousa.supertoolbar.databinding.SuperToolbarTitleBinding
private const val DURATION = 250
open class SuperToolbar : Toolbar {
- private lateinit var titleView: AppCompatTextView
+ private lateinit var binding: SuperToolbarTitleBinding
private var isElevationShown = false
private var centerTitle = false
@@ -45,6 +46,8 @@ open class SuperToolbar : Toolbar {
private var animationDuration = 0L
private var toolbarElevation = 0f
+ // region Constructor
+
constructor(context: Context) : super(context) {
initView(context, null, 0)
}
@@ -62,15 +65,11 @@ open class SuperToolbar : Toolbar {
}
private fun initView(context: Context, attrs: AttributeSet?, defStyleAttr: Int) {
- if (isInEditMode || attrs == null) {
- return
- }
+ if (attrs == null) return
with(context.obtainStyledAttributes(attrs, R.styleable.SuperToolbar, defStyleAttr, 0)) {
- animationDuration =
- getInt(R.styleable.SuperToolbar_superToolbar_animationDuration, DURATION).toLong()
- isElevationShown =
- getBoolean(R.styleable.SuperToolbar_superToolbar_showElevationAtStart, false)
+ animationDuration = getInt(R.styleable.SuperToolbar_superToolbar_animationDuration, DURATION).toLong()
+ isElevationShown = getBoolean(R.styleable.SuperToolbar_superToolbar_showElevationAtStart, false)
centerTitle = getBoolean(R.styleable.SuperToolbar_superToolbar_centerTitle, false)
useLightFont = getBoolean(R.styleable.SuperToolbar_superToolbar_useLightFont, false)
recycle()
@@ -80,38 +79,35 @@ open class SuperToolbar : Toolbar {
with(ViewCompat.getElevation(this)) {
toolbarElevation = if (this == 0f) {
resources.getDimension(R.dimen.super_toolbar_default_elevation)
- } else {
- this
- }
+
+ } else this
}
// By default we remove the elevation when creating the toolbar
- if (!isElevationShown) {
- ViewCompat.setElevation(this, 0f)
- }
+ if (!isElevationShown) ViewCompat.setElevation(this, 0f)
// Add a custom title view
if (centerTitle || useLightFont) {
- titleView = inflate(R.layout.super_toolbar_title) as AppCompatTextView
+ binding = SuperToolbarTitleBinding.inflate(LayoutInflater.from(context), this, false)
- if (useLightFont) {
- titleView.typeface = Typeface.SANS_SERIF
- }
+ if (useLightFont) binding.toolbarTitle.typeface = Typeface.SANS_SERIF
if (centerTitle) {
- val layoutParams = titleView.layoutParams as Toolbar.LayoutParams
+ val layoutParams = binding.toolbarTitle.layoutParams as LayoutParams
layoutParams.gravity = Gravity.CENTER
- addView(titleView, layoutParams)
+ addView(binding.toolbarTitle, layoutParams)
- } else {
- addView(titleView)
- }
+ } else addView(binding.toolbarTitle)
}
}
+ // endregion
+
+ // region Methods from Toolbar
+
override fun setTitle(resId: Int) {
- if (::titleView.isInitialized) {
- titleView.setText(resId)
+ if (::binding.isInitialized) {
+ binding.toolbarTitle.setText(resId)
return
}
@@ -119,23 +115,21 @@ open class SuperToolbar : Toolbar {
}
override fun setTitle(title: CharSequence?) {
- if (::titleView.isInitialized) {
- titleView.text = title
+ if (::binding.isInitialized) {
+ binding.toolbarTitle.text = title
return
}
super.setTitle(title)
}
+ @Suppress("DEPRECATION")
override fun setTitleTextAppearance(context: Context?, resId: Int) {
- if (::titleView.isInitialized) {
- if (hasMinimumSdk(Build.VERSION_CODES.M)) {
- titleView.setTextAppearance(resId)
-
- } else {
- titleView.setTextAppearance(context, resId)
- }
+ if (::binding.isInitialized) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ binding.toolbarTitle.setTextAppearance(resId)
+ } else binding.toolbarTitle.setTextAppearance(context, resId)
return
}
@@ -143,15 +137,17 @@ open class SuperToolbar : Toolbar {
}
override fun setTitleTextColor(color: Int) {
- if (::titleView.isInitialized) {
- titleView.setTextColor(color)
+ if (::binding.isInitialized) {
+ binding.toolbarTitle.setTextColor(color)
return
}
super.setTitleTextColor(color)
}
- //region PUBLIC METHODS
+ // endregion
+
+ //region Public methods
/**
* Toggles the toolbar elevation visibility using an animation
@@ -159,9 +155,7 @@ open class SuperToolbar : Toolbar {
* @param show true if you want to show the elevation; false otherwise
*/
fun setElevationVisibility(show: Boolean) {
- if (isElevationShown == show) {
- return
- }
+ if (isElevationShown == show) return
isElevationShown = show
diff --git a/lib/src/main/java/com/andrefrsousa/supertoolbar/Utils.kt b/lib/src/main/java/com/andrefrsousa/supertoolbar/Utils.kt
deleted file mode 100644
index 4e2b9f7..0000000
--- a/lib/src/main/java/com/andrefrsousa/supertoolbar/Utils.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2018 André Sousa
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package com.andrefrsousa.supertoolbar
-
-import android.os.Build
-
-internal fun hasMinimumSdk(minimumSdk: Int): Boolean {
- return Build.VERSION.SDK_INT >= minimumSdk
-}
\ No newline at end of file
diff --git a/lib/src/main/res/layout/super_toolbar_title.xml b/lib/src/main/res/layout/super_toolbar_title.xml
index 9719316..6319c45 100644
--- a/lib/src/main/res/layout/super_toolbar_title.xml
+++ b/lib/src/main/res/layout/super_toolbar_title.xml
@@ -1,6 +1,6 @@
\ No newline at end of file
+ android:layout_height="wrap_content" />
\ No newline at end of file