Skip to content

Commit

Permalink
Update/fix crash issues with Android-Iconics library for Android 10.0…
Browse files Browse the repository at this point in the history
… devices (#100)

* Fix crash issues with Android-Iconics library on Android 10.0

- There is an inflation run-time error on the old version of Android-Iconics (3.2.5@arr) which prevents the app from running on devices that's been updated to version 10.0 of android.

- Updated iconics-core & iconics-view dependency to 4.0.1@aar from 3.2.5@aar.

- Function calls have changed in the new lib version, so any old method calls have been refactored.

* Remove reflection usage in PageIndicatorTextView and add a alternative

- Opening up the pager will crash Neko due to the reflection usage in the PageIndicatorTextView class.

- Added an alternative to create an outlined text by using the OutlineSpan class and setting it in the setText() method call.

- Modified the ScaleXSpan proportion from 0.1f to 0.3f.
  • Loading branch information
arsonistAnt authored and nonproto committed Oct 22, 2019
1 parent ccca657 commit 1876f85
Show file tree
Hide file tree
Showing 29 changed files with 279 additions and 104 deletions.
6 changes: 3 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -156,9 +156,9 @@ dependencies {
implementation 'org.jsoup:jsoup:1.12.1'

//Icons
implementation "com.mikepenz:iconics-core:3.2.5@aar"
implementation "com.mikepenz:iconics-views:3.2.5@aar"
implementation 'com.mikepenz:community-material-typeface:3.5.95.1@aar'
implementation "com.mikepenz:iconics-core:4.0.1@aar"
implementation "com.mikepenz:iconics-views:4.0.1@aar"
implementation 'com.mikepenz:community-material-typeface:3.5.95.1-kotlin@aar'

// Job scheduling
implementation 'com.evernote:android-job:1.2.5'
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/eu/kanade/tachiyomi/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import android.content.Context
import android.content.res.Configuration
import androidx.multidex.MultiDex
import com.evernote.android.job.JobManager
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.Iconics
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.notification.Notifications
Expand All @@ -29,7 +29,7 @@ open class App : Application() {
setupNotificationChannels()

Iconics.init(applicationContext)
Iconics.registerFont(CommunityMaterial())
Iconics.registerFont(CommunityMaterial)

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ import com.afollestad.materialdialogs.MaterialDialog
import com.f2prateek.rx.preferences.Preference
import com.google.android.material.snackbar.Snackbar
import com.jakewharton.rxbinding.support.v7.widget.queryTextChangeEvents
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.IconicsMenuInflaterUtil
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R
Expand Down Expand Up @@ -266,7 +268,8 @@ open class BrowseCatalogueController(bundle: Bundle) :
CommunityMaterial.Icon2.cmd_view_module
else
CommunityMaterial.Icon2.cmd_view_list
setIcon(IconicsDrawable(applicationContext!!).icon(icon).color(Color.WHITE).sizeDp(20))
setIcon(IconicsDrawable(applicationContext!!)
.icon(icon).colorInt(Color.WHITE).sizeDp(20))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.AbstractExpandableHeaderItem
import eu.davidea.flexibleadapter.items.IFlexible
Expand Down Expand Up @@ -41,7 +43,11 @@ class GroupItem(val filter: Filter.Group<*>) : AbstractExpandableHeaderItem<Grou
else
CommunityMaterial.Icon.cmd_chevron_right

holder.icon.setImageDrawable(IconicsDrawable(holder.contentView.context).icon(icon).color(Color.WHITE).sizeDp(16))
holder.icon
.setImageDrawable(IconicsDrawable(holder.contentView.context)
.icon(icon)
.colorInt(Color.WHITE)
.sizeDp(16))

holder.itemView.setOnClickListener(holder)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ package eu.kanade.tachiyomi.ui.catalogue.filter
import android.graphics.Color
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.AbstractExpandableHeaderItem
import eu.davidea.flexibleadapter.items.IFlexible
Expand Down Expand Up @@ -38,7 +40,10 @@ class SortGroup(val filter: Filter.Sort) : AbstractExpandableHeaderItem<SortGrou
else
CommunityMaterial.Icon.cmd_chevron_right

holder.icon.setImageDrawable(IconicsDrawable(holder.contentView.context).icon(icon).color(Color.WHITE).sizeDp(16))
holder.icon
.setImageDrawable(IconicsDrawable(holder.contentView.context)
.icon(icon)
.colorInt(Color.WHITE).sizeDp(16))

holder.itemView.setOnClickListener(holder)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ import android.view.View
import android.widget.CheckedTextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.AbstractSectionableItem
import eu.davidea.flexibleadapter.items.IFlexible
Expand Down Expand Up @@ -37,9 +39,9 @@ class SortItem(val name: String, val group: SortGroup) : AbstractSectionableItem

fun getIcon() = when (filter.state) {
Filter.Sort.Selection(i, false) -> IconicsDrawable(view.context).icon(CommunityMaterial.Icon.cmd_arrow_down)
.sizeDp(16).color(view.context.getResourceColor(R.attr.colorAccent))
.sizeDp(16).colorInt(view.context.getResourceColor(R.attr.colorAccent))
Filter.Sort.Selection(i, true) -> IconicsDrawable(view.context).icon(CommunityMaterial.Icon.cmd_arrow_up)
.sizeDp(16).color(view.context.getResourceColor(R.attr.colorAccent))
.sizeDp(16).colorInt(view.context.getResourceColor(R.attr.colorAccent))
else -> ContextCompat.getDrawable(view.context, R.drawable.empty_drawable_16dp)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ import android.view.View
import android.widget.CheckedTextView
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.R
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import eu.davidea.flexibleadapter.items.IFlexible
Expand Down Expand Up @@ -45,7 +47,7 @@ open class TriStateItem(val filter: Filter.TriState) : AbstractFlexibleItem<TriS
else
view.context.getResourceColor(android.R.attr.textColorSecondary)

return IconicsDrawable(view.context).icon(icon).sizeDp(18).color(color)
return IconicsDrawable(view.context).icon(icon).sizeDp(18).colorInt(color)
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.snackbar.Snackbar
import com.jakewharton.rxbinding.view.clicks
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.IconicsMenuInflaterUtil
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.SelectableAdapter
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package eu.kanade.tachiyomi.ui.category

import android.view.View
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
import eu.kanade.tachiyomi.util.getResourceColor
Expand Down Expand Up @@ -38,9 +40,12 @@ class CategoryHolder(view: View, val adapter: CategoryAdapter) : BaseFlexibleVie

// Update circle letter image.
itemView.post {
image.setImageDrawable(image.getRound(category.name.take(1).toUpperCase(),false))
image.setImageDrawable(image.getRound(category.name.take(1).toUpperCase(), false))
}
reorder.setImageDrawable(IconicsDrawable(contentView.context).icon(CommunityMaterial.Icon2.cmd_reorder_horizontal).sizeDp(18).color(contentView.context.getResourceColor(android.R.attr.textColorPrimary)))
reorder.setImageDrawable(IconicsDrawable(contentView.context)
.icon(CommunityMaterial.Icon2.cmd_reorder_horizontal)
.sizeDp(18)
.colorInt(contentView.context.getResourceColor(android.R.attr.textColorPrimary)))
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ package eu.kanade.tachiyomi.ui.download
import android.graphics.Color
import android.view.*
import androidx.recyclerview.widget.LinearLayoutManager
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.DownloadService
import eu.kanade.tachiyomi.data.download.model.Download
Expand Down Expand Up @@ -99,16 +101,19 @@ class DownloadController : NucleusController<DownloadPresenter>() {
// Set start button visibility.
menu.findItem(R.id.start_queue).isVisible = !isRunning && !presenter.downloadQueue.isEmpty()
menu.findItem(R.id.start_queue).icon = IconicsDrawable(applicationContext!!)
.icon(CommunityMaterial.Icon2.cmd_play).color(Color.WHITE).sizeDp(18)
.icon(CommunityMaterial.Icon2.cmd_play)
.colorInt(Color.WHITE).sizeDp(18)

// Set pause button visibility.
menu.findItem(R.id.pause_queue).isVisible = isRunning
menu.findItem(R.id.pause_queue).icon = IconicsDrawable(applicationContext!!)
.icon(CommunityMaterial.Icon2.cmd_pause).color(Color.WHITE).sizeDp(18)
.icon(CommunityMaterial.Icon2.cmd_pause)
.colorInt(Color.WHITE).sizeDp(18)
// Set clear button visibility.
menu.findItem(R.id.clear_queue).isVisible = !presenter.downloadQueue.isEmpty()
menu.findItem(R.id.clear_queue).icon = IconicsDrawable(applicationContext!!)
.icon(CommunityMaterial.Icon2.cmd_notification_clear_all).color(Color.WHITE).sizeDp(20)
.icon(CommunityMaterial.Icon2.cmd_notification_clear_all)
.colorInt(Color.WHITE).sizeDp(20)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import com.jakewharton.rxbinding.support.v4.view.pageSelections
import com.jakewharton.rxbinding.support.v7.widget.queryTextChanges
import com.jakewharton.rxrelay.BehaviorRelay
import com.jakewharton.rxrelay.PublishRelay
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.utils.IconicsMenuInflaterUtil
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Category
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import androidx.appcompat.graphics.drawable.DrawerArrowDrawable
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import com.bluelinelabs.conductor.*
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.context.IconicsContextWrapper
import com.mikepenz.iconics.typeface.IIcon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ import com.bluelinelabs.conductor.support.RouterPagerAdapter
import com.google.android.material.tabs.TabLayout
import com.jakewharton.rxrelay.BehaviorRelay
import com.jakewharton.rxrelay.PublishRelay
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Manga
Expand Down Expand Up @@ -140,7 +142,10 @@ class MangaController : RxController, TabbedController {
private fun setTrackingIconInternal(visible: Boolean) {
val tab = activity?.tabs?.getTabAt(TRACK_CONTROLLER) ?: return
val drawable = if (visible)
IconicsDrawable(applicationContext!!).icon(CommunityMaterial.Icon.cmd_check).color(Color.WHITE).sizeDp(12)
IconicsDrawable(applicationContext!!)
.icon(CommunityMaterial.Icon.cmd_check)
.colorInt(Color.WHITE)
.sizeDp(12)
else null

val view = tabField.get(tab) as LinearLayout
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ package eu.kanade.tachiyomi.ui.manga.chapter

import android.view.View
import android.widget.PopupMenu
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.download.model.Download
Expand Down Expand Up @@ -39,7 +41,7 @@ class ChapterHolder(
// Set the correct drawable for dropdown and update the tint to match theme.
// Set the correct drawable for dropdown and update the tint to match theme.
chapter_menu.setImageDrawable(IconicsDrawable(view.context).icon(CommunityMaterial.Icon.cmd_dots_vertical)
.sizeDp(18).color(view.context.getResourceColor(R.attr.icon_color)))
.sizeDp(18).colorInt(view.context.getResourceColor(R.attr.icon_color)))
// Set correct text color
chapter_title.setTextColor(if (chapter.read) adapter.readColor else adapter.unreadColor)
if (chapter.bookmark) chapter_title.setTextColor(adapter.bookmarkedColor)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.snackbar.Snackbar
import com.jakewharton.rxbinding.support.v4.widget.refreshes
import com.jakewharton.rxbinding.view.clicks
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.utils.IconicsMenuInflaterUtil
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.SelectableAdapter
import eu.kanade.tachiyomi.R
Expand Down Expand Up @@ -89,7 +91,10 @@ class ChaptersController : NucleusController<ChaptersPresenter>(),
swipe_refresh.refreshes().subscribeUntilDestroy { fetchChaptersFromSource() }

fab.setImageDrawable(
IconicsDrawable(applicationContext!!).icon(CommunityMaterial.Icon2.cmd_play).color(Color.WHITE).sizeDp(20)
IconicsDrawable(applicationContext!!)
.icon(CommunityMaterial.Icon2.cmd_play)
.colorInt(Color.WHITE)
.sizeDp(20)
)

fab.clicks().subscribeUntilDestroy {
Expand Down Expand Up @@ -144,7 +149,7 @@ class ChaptersController : NucleusController<ChaptersPresenter>(),


menu.findItem(R.id.action_sort).icon = IconicsDrawable(applicationContext!!).icon(CommunityMaterial.Icon2.cmd_sort_numeric)
.sizeDp(20).color(Color.WHITE)
.sizeDp(20).colorInt(Color.WHITE)

// Set correct checkbox values.
menuFilterRead.isChecked = presenter.onlyRead()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ import com.bumptech.glide.request.transition.Transition
import com.jakewharton.rxbinding.support.v4.widget.refreshes
import com.jakewharton.rxbinding.view.clicks
import com.jakewharton.rxbinding.view.longClicks
import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.utils.colorInt
import com.mikepenz.iconics.utils.sizeDp
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.database.models.Manga
Expand Down Expand Up @@ -102,17 +104,17 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
copyToClipboard(manga_artist_label.text.toString(), manga_artist.text.toString())
}

/* manga_artist.clicks().subscribeUntilDestroy {
performGlobalSearch(manga_artist.text.toString())
}*/
/* manga_artist.clicks().subscribeUntilDestroy {
performGlobalSearch(manga_artist.text.toString())
}*/

manga_author.longClicks().subscribeUntilDestroy {
copyToClipboard(manga_author.text.toString(), manga_author.text.toString())
}

/* manga_author.clicks().subscribeUntilDestroy {
performGlobalSearch(manga_author.text.toString())
}*/
/* manga_author.clicks().subscribeUntilDestroy {
performGlobalSearch(manga_author.text.toString())
}*/

manga_summary.longClicks().subscribeUntilDestroy {
copyToClipboard(view.context.getString(R.string.description), manga_summary.text.toString())
Expand All @@ -127,7 +129,11 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.manga_info, menu)
menu.findItem(R.id.action_share).icon = IconicsDrawable(applicationContext!!).icon(CommunityMaterial.Icon2.cmd_share_variant).sizeDp(18).color(Color.WHITE)
menu.findItem(R.id.action_share).icon =
IconicsDrawable(applicationContext!!)
.icon(CommunityMaterial.Icon2.cmd_share_variant)
.sizeDp(18)
.colorInt(Color.WHITE)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
Expand Down Expand Up @@ -321,7 +327,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
}

parentController?.router?.pushController(MangaWebViewController(source.id, url)
.withFadeTransaction())
.withFadeTransaction())
}

/**
Expand Down Expand Up @@ -354,9 +360,15 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),

fab_favorite?.setImageDrawable(
if (isFavorite) {
IconicsDrawable(applicationContext!!).icon(CommunityMaterial.Icon2.cmd_heart).color(Color.WHITE).sizeDp(20)
IconicsDrawable(applicationContext!!)
.icon(CommunityMaterial.Icon2.cmd_heart)
.colorInt(Color.WHITE)
.sizeDp(20)
} else {
IconicsDrawable(applicationContext!!).icon(CommunityMaterial.Icon2.cmd_heart_outline).color(Color.WHITE).sizeDp(20)
IconicsDrawable(applicationContext!!)
.icon(CommunityMaterial.Icon2.cmd_heart_outline)
.colorInt(Color.WHITE)
.sizeDp(20)
})
}

Expand Down
Loading

0 comments on commit 1876f85

Please sign in to comment.