diff --git a/Habitica/res/layout-v22/progress_bar.xml b/Habitica/res/layout-v22/progress_bar.xml
new file mode 100644
index 000000000..5f2bdff98
--- /dev/null
+++ b/Habitica/res/layout-v22/progress_bar.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Habitica/res/layout/progress_bar.xml b/Habitica/res/layout/progress_bar.xml
index 9e7e95a94..1caf7118a 100644
--- a/Habitica/res/layout/progress_bar.xml
+++ b/Habitica/res/layout/progress_bar.xml
@@ -1,5 +1,6 @@
-
+ android:layout_height="match_parent"
+ android:src="@drawable/layout_rounded_bg" />
-
-
+
diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml
index da0eec478..65ceb4ac7 100644
--- a/Habitica/res/values/styles.xml
+++ b/Habitica/res/values/styles.xml
@@ -546,7 +546,7 @@
@string/font_family_condensed
- 14sp
- - 0.035
+ - 0.035
- 2.0dp
- 16dp
- 16dp
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Drawable-Extendsions.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Drawable-Extendsions.kt
index 6bcbe351d..a4acf1bc3 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Drawable-Extendsions.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Drawable-Extendsions.kt
@@ -4,14 +4,16 @@ import android.content.Context
import android.graphics.PorterDuff
import android.graphics.drawable.Drawable
import androidx.core.content.ContextCompat
+import androidx.core.graphics.drawable.DrawableCompat
-public fun Drawable.setTintWith(context: Context, colorResource: Int, tintMode: PorterDuff.Mode) {
- this.setTintMode(tintMode)
- this.setTint(ContextCompat.getColor(context, colorResource))
+public fun Drawable.setTintWith(context: Context, colorResource: Int, tintMode: PorterDuff.Mode = PorterDuff.Mode.MULTIPLY) {
+ DrawableCompat.setTintMode(this, tintMode)
+ DrawableCompat.setTint(this, ContextCompat.getColor(context, colorResource))
+
}
-public fun Drawable.setTintWith(color: Int, tintMode: PorterDuff.Mode) {
- this.setTintMode(tintMode)
- this.setTint(color)
+public fun Drawable.setTintWith(color: Int, tintMode: PorterDuff.Mode = PorterDuff.Mode.MULTIPLY) {
+ DrawableCompat.setTint(this, color)
+ DrawableCompat.setTintMode(this, tintMode)
}
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Window-Extensions.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Window-Extensions.kt
index 11a278d76..5accd44e0 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Window-Extensions.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Window-Extensions.kt
@@ -3,11 +3,14 @@ package com.habitrpg.android.habitica.extensions
import android.os.Build
import android.view.View
import android.view.Window
+import com.habitrpg.android.habitica.R
fun Window.updateStatusBarColor(color: Int, isLight: Boolean) {
- statusBarColor = color
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ statusBarColor = color
@Suppress("DEPRECATION")
decorView.systemUiVisibility = if (isLight) View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR else View.SYSTEM_UI_FLAG_VISIBLE
+ } else {
+ statusBarColor = context.getThemeColor(R.attr.colorPrimaryDark)
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/SoundFile.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/SoundFile.kt
index 5796ec71a..ff608eb2f 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/SoundFile.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/SoundFile.kt
@@ -32,16 +32,11 @@ class SoundFile(val theme: String, private val fileName: String) : MediaPlayer.O
try {
m.setDataSource(file?.path)
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- val attributes = AudioAttributes.Builder()
- .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
- .setLegacyStreamType(AudioManager.STREAM_NOTIFICATION)
- .build()
- m.setAudioAttributes(attributes)
- } else {
- @Suppress("Deprecation")
- m.setAudioStreamType(AudioManager.STREAM_NOTIFICATION)
- }
+ val attributes = AudioAttributes.Builder()
+ .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+ .setLegacyStreamType(AudioManager.STREAM_NOTIFICATION)
+ .build()
+ m.setAudioAttributes(attributes)
m.prepare()
playerPrepared = true
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt
index ff03da730..ba2676439 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt
@@ -129,9 +129,7 @@ class NotificationPublisher : BroadcastReceiver() {
notificationIntent, 0)
builder.setContentIntent(intent)
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- builder.color = ContextCompat.getColor(thisContext, R.color.brand_300)
- }
+ builder.color = ContextCompat.getColor(thisContext, R.color.brand_300)
notification = builder.build()
notification.defaults = notification.defaults or Notification.DEFAULT_LIGHTS
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/MaxHeightLinearLayout.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/MaxHeightLinearLayout.kt
index 85911f935..fb777c35e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/MaxHeightLinearLayout.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/MaxHeightLinearLayout.kt
@@ -31,7 +31,6 @@ class MaxHeightLinearLayout : LinearLayout {
}
}
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {
if (!isInEditMode) {
init(context, attrs)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.kt
index af9ed30cc..e1fa54372 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.kt
@@ -49,11 +49,8 @@ class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChan
compositeSubscription.add(contentRepository.retrieveContent(this).subscribe({ }, RxErrorHandler.handleEmptyError()))
- val window = window
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- window.statusBarColor = ContextCompat.getColor(this, R.color.black_20_alpha)
- }
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
+ window.statusBarColor = ContextCompat.getColor(this, R.color.black_20_alpha)
+ window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
}
override fun injectActivity(component: UserComponent?) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.kt
index 5ee2f9742..5e196d05c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.kt
@@ -156,11 +156,8 @@ class LoginActivity : BaseActivity(), Consumer {
binding.backgroundContainer.post { binding.backgroundContainer.scrollTo(0, binding.backgroundContainer.bottom) }
binding.backgroundContainer.isScrollable = false
- val window = window
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- window.statusBarColor = ContextCompat.getColor(this, R.color.black_20_alpha)
- }
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
+ window.statusBarColor = ContextCompat.getColor(this, R.color.black_20_alpha)
+ window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
binding.newGameButton.setOnClickListener { newGameButtonClicked() }
binding.showLoginButton.setOnClickListener { showLoginButtonClicked() }
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/ToolbarColorHelper.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/ToolbarColorHelper.kt
index 91d625daf..106948dee 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/ToolbarColorHelper.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/ToolbarColorHelper.kt
@@ -46,13 +46,16 @@ object ToolbarColorHelper {
fun colorizeToolbar(toolbar: Toolbar, activity: Activity?, overrideModernHeader: Boolean? = null) {
if (activity == null) return
val modernHeaderStyle = overrideModernHeader ?: PreferenceManager.getDefaultSharedPreferences(activity).getBoolean("modern_header_style", true)
- val toolbarIconsColor = if (modernHeaderStyle && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ val toolbarIconsColor = if (modernHeaderStyle) {
toolbar.setBackgroundColor(activity.getThemeColor(R.attr.headerBackgroundColor))
activity.getThemeColor(R.attr.headerTextColor)
} else {
toolbar.setBackgroundColor(activity.getThemeColor(R.attr.colorPrimary))
activity.getThemeColor(R.attr.toolbarContentColor)
}
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ activity.window.statusBarColor = activity.getThemeColor(R.attr.colorPrimaryDark)
+ }
val colorFilter = PorterDuffColorFilter(toolbarIconsColor, PorterDuff.Mode.MULTIPLY)
for (i in 0 until toolbar.childCount) {
val v = toolbar.getChildAt(i)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
index d470a436e..7ba00f7af 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
@@ -7,6 +7,7 @@ import android.widget.FrameLayout
import android.widget.ImageView
import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.extensions.setTintWith
import com.habitrpg.android.habitica.models.responses.TaskDirection
import com.habitrpg.android.habitica.models.tasks.Task
@@ -30,8 +31,7 @@ class HabitViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U
this.task = data
if (data.up == true) {
val plusIcon = ContextCompat.getDrawable(context, R.drawable.habit_plus)
- plusIcon?.setTint(ContextCompat.getColor(context, R.color.white))
- plusIcon?.setTintMode(PorterDuff.Mode.MULTIPLY)
+ plusIcon?.setTintWith(context, R.color.white)
this.btnPlusIconView.setImageDrawable(plusIcon)
val drawable = ContextCompat.getDrawable(context, R.drawable.habit_circle)
this.btnPlusWrapper.setBackgroundResource(data.lightTaskColor)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaProgressBar.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaProgressBar.kt
index aa568cd89..713706086 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaProgressBar.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaProgressBar.kt
@@ -1,10 +1,16 @@
package com.habitrpg.android.habitica.ui.views
import android.content.Context
+import android.content.res.ColorStateList
+import android.graphics.PorterDuff
+import android.os.Build
import android.util.AttributeSet
import android.view.View
import android.widget.FrameLayout
+import android.widget.ImageView
import android.widget.LinearLayout
+import androidx.core.content.ContextCompat
+import androidx.core.widget.ImageViewCompat
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.databinding.ProgressBarBinding
import com.habitrpg.android.habitica.extensions.layoutInflater
@@ -18,7 +24,13 @@ class HabiticaProgressBar(context: Context, attrs: AttributeSet?) : FrameLayout(
var barForegroundColor: Int = 0
set(value) {
field = value
- DataBindingUtils.setRoundedBackground(binding.bar, value)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
+ DataBindingUtils.setRoundedBackground(binding.bar, value)
+ } else {
+ val bar: ImageView = findViewById(R.id.bar)
+ ImageViewCompat.setImageTintList(bar, ColorStateList.valueOf(field))
+ ImageViewCompat.setImageTintMode(bar, PorterDuff.Mode.SRC_IN)
+ }
}
var barPendingColor: Int = 0
@@ -105,9 +117,8 @@ class HabiticaProgressBar(context: Context, attrs: AttributeSet?) : FrameLayout(
layout?.weight = weight.toFloat()
view.layoutParams = layout
} else if (layout?.weight?.toDouble() != weight) {
- val anim = DataBindingUtils.LayoutWeightAnimation(view, weight.toFloat())
- anim.duration = 300
- view.startAnimation(anim)
+ layout?.weight = weight.toFloat()
+ view.layoutParams = layout
}
}
}
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/stats/StatsSliderView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/stats/StatsSliderView.kt
index 41d024e9e..cd12cd67a 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/stats/StatsSliderView.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/stats/StatsSliderView.kt
@@ -52,11 +52,7 @@ class StatsSliderView(context: Context, attrs: AttributeSet?) : LinearLayout(con
binding.statTypeTitle.text = attributes.getString(R.styleable.StatsSliderView_statsTitle)
val statColor = attributes.getColor(R.styleable.StatsSliderView_statsColor, 0)
binding.statTypeTitle.setTextColor(attributes.getColor(R.styleable.StatsSliderView_statsTextColor, 0))
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- binding.statsSeekBar.progressTintList = ColorStateList.valueOf(statColor)
- } else {
- binding.statsSeekBar.progressDrawable.setTintWith(statColor, PorterDuff.Mode.SRC_IN)
- }
+ binding.statsSeekBar.progressTintList = ColorStateList.valueOf(statColor)
val thumbDrawable = ContextCompat.getDrawable(context, R.drawable.seekbar_thumb)
thumbDrawable?.setTintWith(statColor, PorterDuff.Mode.MULTIPLY)
binding.statsSeekBar.thumb = thumbDrawable