mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-11-10 10:37:47 +01:00
Support API 25. Use new DividerItemDecoration.
This commit is contained in:
parent
eb15fe3898
commit
05b14bae7b
8 changed files with 14 additions and 110 deletions
|
@ -33,14 +33,14 @@ def includeUpdater() {
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 24
|
compileSdkVersion 25
|
||||||
buildToolsVersion "24.0.2"
|
buildToolsVersion "25.0.0"
|
||||||
publishNonDefault true
|
publishNonDefault true
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "eu.kanade.tachiyomi"
|
applicationId "eu.kanade.tachiyomi"
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 24
|
targetSdkVersion 25
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
versionCode 12
|
versionCode 12
|
||||||
versionName "0.3.1"
|
versionName "0.3.1"
|
||||||
|
@ -97,7 +97,7 @@ dependencies {
|
||||||
compile 'com.github.inorichi:ReactiveNetwork:69092ed'
|
compile 'com.github.inorichi:ReactiveNetwork:69092ed'
|
||||||
|
|
||||||
// Android support library
|
// Android support library
|
||||||
final support_library_version = '24.2.1'
|
final support_library_version = '25.0.0'
|
||||||
compile "com.android.support:support-v4:$support_library_version"
|
compile "com.android.support:support-v4:$support_library_version"
|
||||||
compile "com.android.support:appcompat-v7:$support_library_version"
|
compile "com.android.support:appcompat-v7:$support_library_version"
|
||||||
compile "com.android.support:cardview-v7:$support_library_version"
|
compile "com.android.support:cardview-v7:$support_library_version"
|
||||||
|
|
|
@ -3,10 +3,7 @@ package eu.kanade.tachiyomi.ui.catalogue
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.design.widget.Snackbar
|
import android.support.design.widget.Snackbar
|
||||||
import android.support.v7.widget.GridLayoutManager
|
import android.support.v7.widget.*
|
||||||
import android.support.v7.widget.LinearLayoutManager
|
|
||||||
import android.support.v7.widget.SearchView
|
|
||||||
import android.support.v7.widget.Toolbar
|
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import android.view.animation.AnimationUtils
|
import android.view.animation.AnimationUtils
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
|
@ -21,10 +18,8 @@ import eu.kanade.tachiyomi.ui.base.adapter.FlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
|
import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
|
||||||
import eu.kanade.tachiyomi.ui.main.MainActivity
|
import eu.kanade.tachiyomi.ui.main.MainActivity
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaActivity
|
import eu.kanade.tachiyomi.ui.manga.MangaActivity
|
||||||
import eu.kanade.tachiyomi.util.getResourceDrawable
|
|
||||||
import eu.kanade.tachiyomi.util.snack
|
import eu.kanade.tachiyomi.util.snack
|
||||||
import eu.kanade.tachiyomi.util.toast
|
import eu.kanade.tachiyomi.util.toast
|
||||||
import eu.kanade.tachiyomi.widget.DividerItemDecoration
|
|
||||||
import eu.kanade.tachiyomi.widget.EndlessScrollListener
|
import eu.kanade.tachiyomi.widget.EndlessScrollListener
|
||||||
import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener
|
import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener
|
||||||
import kotlinx.android.synthetic.main.fragment_catalogue.*
|
import kotlinx.android.synthetic.main.fragment_catalogue.*
|
||||||
|
@ -149,9 +144,7 @@ open class CatalogueFragment : BaseRxFragment<CataloguePresenter>(), FlexibleVie
|
||||||
catalogue_list.adapter = adapter
|
catalogue_list.adapter = adapter
|
||||||
catalogue_list.layoutManager = llm
|
catalogue_list.layoutManager = llm
|
||||||
catalogue_list.addOnScrollListener(listScrollListener)
|
catalogue_list.addOnScrollListener(listScrollListener)
|
||||||
catalogue_list.addItemDecoration(
|
catalogue_list.addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL))
|
||||||
DividerItemDecoration(context.theme.getResourceDrawable(R.attr.divider_drawable)))
|
|
||||||
|
|
||||||
if (presenter.isListMode) {
|
if (presenter.isListMode) {
|
||||||
switcher.showNext()
|
switcher.showNext()
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.DialogFragment
|
import android.support.v4.app.DialogFragment
|
||||||
import android.support.v7.view.ActionMode
|
import android.support.v7.view.ActionMode
|
||||||
|
import android.support.v7.widget.DividerItemDecoration
|
||||||
import android.support.v7.widget.LinearLayoutManager
|
import android.support.v7.widget.LinearLayoutManager
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
|
@ -19,10 +20,8 @@ import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaActivity
|
import eu.kanade.tachiyomi.ui.manga.MangaActivity
|
||||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||||
import eu.kanade.tachiyomi.util.getCoordinates
|
import eu.kanade.tachiyomi.util.getCoordinates
|
||||||
import eu.kanade.tachiyomi.util.getResourceDrawable
|
|
||||||
import eu.kanade.tachiyomi.util.toast
|
import eu.kanade.tachiyomi.util.toast
|
||||||
import eu.kanade.tachiyomi.widget.DeletingChaptersDialog
|
import eu.kanade.tachiyomi.widget.DeletingChaptersDialog
|
||||||
import eu.kanade.tachiyomi.widget.DividerItemDecoration
|
|
||||||
import kotlinx.android.synthetic.main.fragment_manga_chapters.*
|
import kotlinx.android.synthetic.main.fragment_manga_chapters.*
|
||||||
import nucleus.factory.RequiresPresenter
|
import nucleus.factory.RequiresPresenter
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
@ -67,8 +66,7 @@ class ChaptersFragment : BaseRxFragment<ChaptersPresenter>(), ActionMode.Callbac
|
||||||
|
|
||||||
recycler.adapter = adapter
|
recycler.adapter = adapter
|
||||||
recycler.layoutManager = LinearLayoutManager(activity)
|
recycler.layoutManager = LinearLayoutManager(activity)
|
||||||
recycler.addItemDecoration(DividerItemDecoration(
|
recycler.addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL))
|
||||||
context.theme.getResourceDrawable(R.attr.divider_drawable)))
|
|
||||||
recycler.setHasFixedSize(true)
|
recycler.setHasFixedSize(true)
|
||||||
|
|
||||||
swipe_refresh.setOnRefreshListener { fetchChapters() }
|
swipe_refresh.setOnRefreshListener { fetchChapters() }
|
||||||
|
|
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.recent_updates
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.DialogFragment
|
import android.support.v4.app.DialogFragment
|
||||||
import android.support.v7.view.ActionMode
|
import android.support.v7.view.ActionMode
|
||||||
|
import android.support.v7.widget.DividerItemDecoration
|
||||||
import android.support.v7.widget.LinearLayoutManager
|
import android.support.v7.widget.LinearLayoutManager
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
|
@ -13,9 +14,7 @@ import eu.kanade.tachiyomi.ui.base.adapter.FlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
|
import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
|
||||||
import eu.kanade.tachiyomi.ui.main.MainActivity
|
import eu.kanade.tachiyomi.ui.main.MainActivity
|
||||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||||
import eu.kanade.tachiyomi.util.getResourceDrawable
|
|
||||||
import eu.kanade.tachiyomi.widget.DeletingChaptersDialog
|
import eu.kanade.tachiyomi.widget.DeletingChaptersDialog
|
||||||
import eu.kanade.tachiyomi.widget.DividerItemDecoration
|
|
||||||
import kotlinx.android.synthetic.main.fragment_recent_chapters.*
|
import kotlinx.android.synthetic.main.fragment_recent_chapters.*
|
||||||
import nucleus.factory.RequiresPresenter
|
import nucleus.factory.RequiresPresenter
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
@ -69,7 +68,7 @@ class RecentChaptersFragment
|
||||||
override fun onViewCreated(view: View, savedState: Bundle?) {
|
override fun onViewCreated(view: View, savedState: Bundle?) {
|
||||||
// Init RecyclerView and adapter
|
// Init RecyclerView and adapter
|
||||||
recycler.layoutManager = LinearLayoutManager(activity)
|
recycler.layoutManager = LinearLayoutManager(activity)
|
||||||
recycler.addItemDecoration(DividerItemDecoration(context.theme.getResourceDrawable(R.attr.divider_drawable)))
|
recycler.addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL))
|
||||||
recycler.setHasFixedSize(true)
|
recycler.setHasFixedSize(true)
|
||||||
adapter = RecentChaptersAdapter(this)
|
adapter = RecentChaptersAdapter(this)
|
||||||
recycler.adapter = adapter
|
recycler.adapter = adapter
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
package eu.kanade.tachiyomi.widget
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.Canvas
|
|
||||||
import android.graphics.Rect
|
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import android.support.v7.widget.LinearLayoutManager
|
|
||||||
import android.support.v7.widget.RecyclerView
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.view.View
|
|
||||||
|
|
||||||
class DividerItemDecoration : RecyclerView.ItemDecoration {
|
|
||||||
|
|
||||||
private val divider: Drawable?
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet) {
|
|
||||||
val a = context.obtainStyledAttributes(attrs, intArrayOf(android.R.attr.listDivider))
|
|
||||||
divider = a.getDrawable(0)
|
|
||||||
a.recycle()
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(divider: Drawable) {
|
|
||||||
this.divider = divider
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State?) {
|
|
||||||
super.getItemOffsets(outRect, view, parent, state)
|
|
||||||
if (divider == null) return
|
|
||||||
if (parent.getChildPosition(view) < 1) return
|
|
||||||
|
|
||||||
if (getOrientation(parent) == LinearLayoutManager.VERTICAL)
|
|
||||||
outRect.top = divider.intrinsicHeight
|
|
||||||
else
|
|
||||||
outRect.left = divider.intrinsicWidth
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State?) {
|
|
||||||
if (divider == null) {
|
|
||||||
super.onDrawOver(c, parent, state)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getOrientation(parent) == LinearLayoutManager.VERTICAL) {
|
|
||||||
val left = parent.paddingLeft
|
|
||||||
val right = parent.width - parent.paddingRight
|
|
||||||
val childCount = parent.childCount
|
|
||||||
val dividerHeight = divider.intrinsicHeight
|
|
||||||
|
|
||||||
for (i in 1..childCount - 1) {
|
|
||||||
val child = parent.getChildAt(i)
|
|
||||||
val params = child.layoutParams as RecyclerView.LayoutParams
|
|
||||||
val ty = (child.translationY + 0.5f).toInt()
|
|
||||||
val top = child.top - params.topMargin + ty
|
|
||||||
val bottom = top + dividerHeight
|
|
||||||
divider.setBounds(left, top, right, bottom)
|
|
||||||
divider.draw(c)
|
|
||||||
}
|
|
||||||
} else { //horizontal
|
|
||||||
val top = parent.paddingTop
|
|
||||||
val bottom = parent.height - parent.paddingBottom
|
|
||||||
val childCount = parent.childCount
|
|
||||||
|
|
||||||
for (i in 1..childCount - 1) {
|
|
||||||
val child = parent.getChildAt(i)
|
|
||||||
val params = child.layoutParams as RecyclerView.LayoutParams
|
|
||||||
val size = divider.intrinsicWidth
|
|
||||||
val left = child.left - params.leftMargin
|
|
||||||
val right = left + size
|
|
||||||
divider.setBounds(left, top, right, bottom)
|
|
||||||
divider.draw(c)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getOrientation(parent: RecyclerView): Int {
|
|
||||||
if (parent.layoutManager is LinearLayoutManager) {
|
|
||||||
val layoutManager = parent.layoutManager as LinearLayoutManager
|
|
||||||
return layoutManager.orientation
|
|
||||||
} else
|
|
||||||
throw IllegalStateException("DividerItemDecoration can only be used with a LinearLayoutManager.")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,13 +1,11 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<!-- Define the values for the attribute -->
|
|
||||||
<attr name="typeface" format="enum">
|
<attr name="typeface" format="enum">
|
||||||
<enum name="ptsansNarrow" value="0"/>
|
<enum name="ptsansNarrow" value="0"/>
|
||||||
<enum name="ptsansNarrowBold" value="1"/>
|
<enum name="ptsansNarrowBold" value="1"/>
|
||||||
</attr>
|
</attr>
|
||||||
|
|
||||||
<!-- Tell Android that the class "CustomButton" can be styled,
|
|
||||||
and which attributes it supports -->
|
|
||||||
<declare-styleable name="PTSansTextView">
|
<declare-styleable name="PTSansTextView">
|
||||||
<attr name="typeface"/>
|
<attr name="typeface"/>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
@ -25,7 +23,6 @@
|
||||||
<attr name="navigation_view_theme" format="reference"/>
|
<attr name="navigation_view_theme" format="reference"/>
|
||||||
<attr name="selectable_list_drawable" format="reference|integer" />
|
<attr name="selectable_list_drawable" format="reference|integer" />
|
||||||
<attr name="selectable_library_drawable" format="reference|integer"/>
|
<attr name="selectable_library_drawable" format="reference|integer"/>
|
||||||
<attr name="divider_drawable" format="reference|integer" />
|
|
||||||
<attr name="text_color_primary" format="reference|integer"/>
|
<attr name="text_color_primary" format="reference|integer"/>
|
||||||
<attr name="background_card" format="reference|integer"/>
|
<attr name="background_card" format="reference|integer"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
<item name="android:colorBackground">@color/backgroundLight</item>
|
<item name="android:colorBackground">@color/backgroundLight</item>
|
||||||
<item name="android:listSelector">?colorAccent</item>
|
<item name="android:listSelector">?colorAccent</item>
|
||||||
<item name="android:divider">@color/dividerLight</item>
|
<item name="android:divider">@color/dividerLight</item>
|
||||||
|
<item name="android:listDivider">@drawable/line_divider_light</item>
|
||||||
|
|
||||||
<!-- Themes -->
|
<!-- Themes -->
|
||||||
<item name="windowActionModeOverlay">true</item>
|
<item name="windowActionModeOverlay">true</item>
|
||||||
|
@ -33,7 +34,6 @@
|
||||||
<!-- Custom Attributes-->
|
<!-- Custom Attributes-->
|
||||||
<item name="selectable_list_drawable">@drawable/list_item_selector_light</item>
|
<item name="selectable_list_drawable">@drawable/list_item_selector_light</item>
|
||||||
<item name="selectable_library_drawable">@drawable/library_item_selector_light</item>
|
<item name="selectable_library_drawable">@drawable/library_item_selector_light</item>
|
||||||
<item name="divider_drawable">@drawable/line_divider_light</item>
|
|
||||||
<item name="text_color_primary">@color/textColorPrimaryLight</item>
|
<item name="text_color_primary">@color/textColorPrimaryLight</item>
|
||||||
<item name="background_card">@color/dialogLight</item>
|
<item name="background_card">@color/dialogLight</item>
|
||||||
<item name="asp_preferenceIconTint">?colorAccent</item>
|
<item name="asp_preferenceIconTint">?colorAccent</item>
|
||||||
|
@ -60,6 +60,7 @@
|
||||||
<item name="android:colorBackground">@color/backgroundDark</item>
|
<item name="android:colorBackground">@color/backgroundDark</item>
|
||||||
<item name="android:listSelector">?colorAccent</item>
|
<item name="android:listSelector">?colorAccent</item>
|
||||||
<item name="android:divider">@color/dividerDark</item>
|
<item name="android:divider">@color/dividerDark</item>
|
||||||
|
<item name="android:listDivider">@drawable/line_divider_dark</item>
|
||||||
|
|
||||||
<!-- Themes -->
|
<!-- Themes -->
|
||||||
<item name="windowActionModeOverlay">true</item>
|
<item name="windowActionModeOverlay">true</item>
|
||||||
|
@ -73,7 +74,6 @@
|
||||||
<item name="navigation_view_theme">@style/Theme.Widget.NavigationView.Dark</item>
|
<item name="navigation_view_theme">@style/Theme.Widget.NavigationView.Dark</item>
|
||||||
<item name="selectable_list_drawable">@drawable/list_item_selector_dark</item>
|
<item name="selectable_list_drawable">@drawable/list_item_selector_dark</item>
|
||||||
<item name="selectable_library_drawable">@drawable/library_item_selector_dark</item>
|
<item name="selectable_library_drawable">@drawable/library_item_selector_dark</item>
|
||||||
<item name="divider_drawable">@drawable/line_divider_dark</item>
|
|
||||||
<item name="text_color_primary">@color/textColorPrimaryDark</item>
|
<item name="text_color_primary">@color/textColorPrimaryDark</item>
|
||||||
<item name="background_card">@color/dialogDark</item>
|
<item name="background_card">@color/dialogDark</item>
|
||||||
<item name="asp_preferenceIconTint">?colorAccent</item>
|
<item name="asp_preferenceIconTint">?colorAccent</item>
|
||||||
|
|
|
@ -6,7 +6,7 @@ buildscript {
|
||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:2.2.1'
|
classpath 'com.android.tools.build:gradle:2.2.2'
|
||||||
classpath 'com.github.ben-manes:gradle-versions-plugin:0.13.0'
|
classpath 'com.github.ben-manes:gradle-versions-plugin:0.13.0'
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
|
Loading…
Reference in a new issue