Support lift Appbar when scroll, use CollapsingAppbar on gallery detail for long title
This commit is contained in:
1 parent
2da436189a
commit
545eed98a7
14 files changed
+206
-29
No files matched your search
@@ -0,0 +1,19 @@
|
||||
package com.hippo.ehviewer.ui.scene
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.hippo.ehviewer.R
|
||||
|
||||
abstract class CollapsingToolbarScene : ToolbarScene() {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?, savedInstanceState: Bundle?
|
||||
): View? {
|
||||
val view = inflater.inflate(R.layout.scene_collapsing_toolbar, container, false) as ViewGroup
|
||||
mToolbar = view.findViewById(R.id.toolbar)
|
||||
val contentView = onCreateViewWithToolbar(inflater, view, savedInstanceState)
|
||||
return view.apply { addView(contentView, 0) }
|
||||
}
|
||||
}
|
||||
@@ -61,6 +61,7 @@ import androidx.annotation.StringRes;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.widget.NestedScrollView;
|
||||
|
||||
import com.google.android.material.progressindicator.CircularProgressIndicator;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
@@ -120,7 +121,6 @@ import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.FileUtils;
|
||||
import com.hippo.yorozuya.IOUtils;
|
||||
import com.hippo.yorozuya.IntIdGenerator;
|
||||
import com.hippo.yorozuya.SimpleHandler;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
import com.hippo.yorozuya.collect.IntList;
|
||||
|
||||
@@ -135,7 +135,7 @@ import java.util.List;
|
||||
|
||||
import okhttp3.HttpUrl;
|
||||
import rikka.core.res.ResourcesKt;
|
||||
public class GalleryDetailScene extends ToolbarScene implements View.OnClickListener,
|
||||
public class GalleryDetailScene extends CollapsingToolbarScene implements View.OnClickListener,
|
||||
com.hippo.ehviewer.download.DownloadManager.DownloadInfoListener,
|
||||
View.OnLongClickListener {
|
||||
public final static String KEY_ACTION = "action";
|
||||
@@ -570,7 +570,7 @@ public class GalleryDetailScene extends ToolbarScene implements View.OnClickList
|
||||
View view = inflater.inflate(R.layout.scene_gallery_detail, container, false);
|
||||
|
||||
ViewGroup main = (ViewGroup) ViewUtils.$$(view, R.id.main);
|
||||
ScrollView mainView = (ScrollView) ViewUtils.$$(main, R.id.scroll_view);
|
||||
NestedScrollView mainView = (NestedScrollView) ViewUtils.$$(main, R.id.scroll_view);
|
||||
View progressView = ViewUtils.$$(main, R.id.progress_view);
|
||||
mTip = (TextView) ViewUtils.$$(main, R.id.tip);
|
||||
mViewTransition = new ViewTransition(mainView, progressView, mTip);
|
||||
|
||||
@@ -35,7 +35,6 @@ import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
||||
import com.hippo.app.BaseDialogBuilder
|
||||
import com.hippo.easyrecyclerview.EasyRecyclerView
|
||||
import com.hippo.easyrecyclerview.FastScroller
|
||||
import com.hippo.easyrecyclerview.HandlerDrawable
|
||||
import com.hippo.ehviewer.*
|
||||
@@ -61,7 +60,7 @@ import kotlinx.coroutines.launch
|
||||
import rikka.core.res.resolveColor
|
||||
|
||||
class HistoryScene : ToolbarScene() {
|
||||
private var mRecyclerView: EasyRecyclerView? = null
|
||||
private var mRecyclerView: RecyclerView? = null
|
||||
private val mAdapter: HistoryAdapter by lazy {
|
||||
HistoryAdapter(object : DiffUtil.ItemCallback<HistoryInfo>() {
|
||||
override fun areItemsTheSame(oldItem: HistoryInfo, newItem: HistoryInfo): Boolean {
|
||||
@@ -132,7 +131,7 @@ class HistoryScene : ToolbarScene() {
|
||||
): View {
|
||||
val view = inflater.inflate(R.layout.scene_history, container, false)
|
||||
val content = ViewUtils.`$$`(view, R.id.content)
|
||||
val recyclerView = ViewUtils.`$$`(content, R.id.recycler_view) as EasyRecyclerView
|
||||
val recyclerView = ViewUtils.`$$`(content, R.id.recycler_view) as RecyclerView
|
||||
val mFastScroller = ViewUtils.`$$`(content, R.id.fast_scroller) as FastScroller
|
||||
val mTip = ViewUtils.`$$`(view, R.id.tip) as TextView
|
||||
ViewTransition(content, mTip)
|
||||
@@ -373,7 +372,6 @@ class HistoryScene : ToolbarScene() {
|
||||
private val mGi: GalleryInfo
|
||||
) : DialogInterface.OnClickListener {
|
||||
override fun onClick(dialog: DialogInterface, which: Int) {
|
||||
mRecyclerView?.outOfCustomChoiceMode()
|
||||
val downloadManager = EhApplication.getDownloadManager(requireContext())
|
||||
val downloadInfo = downloadManager.getDownloadInfo(mGi.gid) ?: return
|
||||
val label = if (which == 0) null else mLabels[which]
|
||||
|
||||
@@ -23,10 +23,11 @@ import android.view.ViewGroup
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.hippo.ehviewer.R
|
||||
|
||||
abstract class ToolbarScene : BaseScene() {
|
||||
private var mToolbar: Toolbar? = null
|
||||
protected var mToolbar: Toolbar? = null
|
||||
private var mTempTitle: CharSequence? = null
|
||||
|
||||
abstract fun onCreateViewWithToolbar(
|
||||
@@ -41,7 +42,7 @@ abstract class ToolbarScene : BaseScene() {
|
||||
val view = inflater.inflate(R.layout.scene_toolbar, container, false) as ViewGroup
|
||||
mToolbar = view.findViewById(R.id.toolbar)
|
||||
val contentView = onCreateViewWithToolbar(inflater, view, savedInstanceState)
|
||||
return view.apply { addView(contentView, 1) }
|
||||
return view.apply { addView(contentView, 0) }
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
|
||||
@@ -88,8 +88,12 @@ public class ContentLayout extends FrameLayout {
|
||||
init(context);
|
||||
}
|
||||
|
||||
protected int getLayout() {
|
||||
return R.layout.widget_content_layout;
|
||||
}
|
||||
|
||||
private void init(Context context) {
|
||||
((Activity) context).getLayoutInflater().inflate(R.layout.widget_content_layout, this);
|
||||
((Activity) context).getLayoutInflater().inflate(getLayout(), this);
|
||||
setClipChildren(false);
|
||||
setClipToPadding(false);
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.hippo.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import com.hippo.ehviewer.R
|
||||
|
||||
class ContentLayout2 @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null
|
||||
) : ContentLayout(context, attrs) {
|
||||
override fun getLayout(): Int {
|
||||
return R.layout.widget_content_layout_2
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user