Commit 39eda934 authored by wanglei's avatar wanglei

...处理刷新

parent dc25fd17
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<activity <activity
android:name=".ui.main.MainActivity" android:name=".ui.main.MainActivity"
android:exported="true" android:exported="true"
android:launchMode="singleTop" android:launchMode="singleTask"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
......
...@@ -176,7 +176,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>() { ...@@ -176,7 +176,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>() {
initData() initData()
} else { } else {
binding.llEmpty.visibility = View.GONE binding.llEmpty.visibility = View.GONE
adapter?.submitList(list) adapter?.submitList(getRvAdList(list))
} }
} }
...@@ -197,7 +197,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>() { ...@@ -197,7 +197,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>() {
adapter?.submitList(listOf()) adapter?.submitList(listOf())
} else { } else {
binding.llEmpty.visibility = View.GONE binding.llEmpty.visibility = View.GONE
adapter?.submitList(list) adapter?.submitList(getRvAdList(list))
} }
binding.swipeRefreshLayout.isRefreshing = false binding.swipeRefreshLayout.isRefreshing = false
} }
......
...@@ -7,6 +7,7 @@ import android.view.View ...@@ -7,6 +7,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.pdfoneread.R import com.base.pdfoneread.R
import com.base.pdfoneread.ads.admob.AdmobNativeUtils
import com.base.pdfoneread.bean.DocumentBean import com.base.pdfoneread.bean.DocumentBean
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_EXCEL import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_EXCEL
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PDF import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PDF
...@@ -38,7 +39,7 @@ class DocumentAdapter( ...@@ -38,7 +39,7 @@ class DocumentAdapter(
item ?: return item ?: return
if (item.isAd) { if (item.isAd) {
val binding = ItemAdBinding.bind(holder.itemView) val binding = ItemAdBinding.bind(holder.itemView)
// AdmobNativeUtils.showNativeAd(activity, binding.flAd, R.layout.layout_admob_document) AdmobNativeUtils.showNativeAd(activity, binding.flAd, R.layout.layout_admob_document)
} else { } else {
val binding = ItemDocumentBinding.bind(holder.itemView) val binding = ItemDocumentBinding.bind(holder.itemView)
......
...@@ -4,6 +4,7 @@ import android.content.Context ...@@ -4,6 +4,7 @@ import android.content.Context
import android.media.MediaScannerConnection import android.media.MediaScannerConnection
import android.net.Uri import android.net.Uri
import android.os.Environment import android.os.Environment
import com.base.pdfoneread.ads.AdmobHelper
import com.base.pdfoneread.ui.MyApplication.Companion.appContext import com.base.pdfoneread.ui.MyApplication.Companion.appContext
import com.base.pdfoneread.bean.ConstObject import com.base.pdfoneread.bean.ConstObject
import com.base.pdfoneread.bean.ConstObject.MIME_TYPE_DOC import com.base.pdfoneread.bean.ConstObject.MIME_TYPE_DOC
...@@ -27,6 +28,7 @@ import com.base.pdfoneread.utils.getMediaFile ...@@ -27,6 +28,7 @@ import com.base.pdfoneread.utils.getMediaFile
import java.io.File import java.io.File
import java.io.FileOutputStream import java.io.FileOutputStream
import java.io.IOException import java.io.IOException
import java.util.concurrent.CopyOnWriteArrayList
/** /**
...@@ -41,10 +43,10 @@ fun getGlobalAllList(): ArrayList<DocumentBean> { ...@@ -41,10 +43,10 @@ fun getGlobalAllList(): ArrayList<DocumentBean> {
return arrayListOf return arrayListOf
} }
val GlobalPdfList = arrayListOf<DocumentBean>() val GlobalPdfList = CopyOnWriteArrayList<DocumentBean>()
val GlobalWordList = arrayListOf<DocumentBean>() val GlobalWordList = CopyOnWriteArrayList<DocumentBean>()
var GlobalExcelList = arrayListOf<DocumentBean>() var GlobalExcelList = CopyOnWriteArrayList<DocumentBean>()
var GlobalPptList = arrayListOf<DocumentBean>() var GlobalPptList = CopyOnWriteArrayList<DocumentBean>()
fun cleanGlobalData() { fun cleanGlobalData() {
GlobalPdfList.clear() GlobalPdfList.clear()
...@@ -345,4 +347,16 @@ fun saveBookmarkChange(addRemove: Boolean, path: String) { ...@@ -345,4 +347,16 @@ fun saveBookmarkChange(addRemove: Boolean, path: String) {
} else { } else {
SpStringUtils.deleteSpString(BOOKMARK_KEY, path) SpStringUtils.deleteSpString(BOOKMARK_KEY, path)
} }
}
fun getRvAdList(list: List<DocumentBean>): List<DocumentBean> {
val flag = AdmobHelper.isShowRvNativeAd()
if (flag) {
val arrayList = arrayListOf<DocumentBean>()
arrayList.addAll(list)
arrayList.add(1, DocumentBean().apply { isAd = true })
return arrayList
}
return list
} }
\ No newline at end of file
...@@ -51,6 +51,7 @@ class HomeFragment() : Fragment() { ...@@ -51,6 +51,7 @@ class HomeFragment() : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
LogEx.logDebug(TAG,"onCreate")
} }
override fun onCreateView( override fun onCreateView(
...@@ -114,14 +115,23 @@ class HomeFragment() : Fragment() { ...@@ -114,14 +115,23 @@ class HomeFragment() : Fragment() {
} }
binding.swipeRefreshLayout.setOnRefreshListener { binding.swipeRefreshLayout.setOnRefreshListener {
refreshData() refreshData("swipeRefreshLayout")
} }
refreshData("onViewCreated")
}
refreshData() override fun onDestroyView() {
super.onDestroyView()
LogEx.logDebug(TAG,"onDestroyView")
}
override fun onDestroy() {
super.onDestroy()
LogEx.logDebug(TAG,"onDestroy")
} }
fun refreshData() { fun refreshData(where: String = "") {
LogEx.logDebug(TAG, "refreshData where=$where")
kotlin.runCatching { kotlin.runCatching {
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
......
...@@ -47,7 +47,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -47,7 +47,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
changeHomeRvIcon() changeHomeRvIcon()
if (!checkStorePermission()) { if (!checkStorePermission()) {
showStoragePermission(launcher) { refreshHomeData() } showStoragePermission(launcher) {
refreshHomeData()
}
} }
} }
...@@ -68,6 +70,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -68,6 +70,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
changeHomeUI() changeHomeUI()
} }
binding.llHome.callOnClick() binding.llHome.callOnClick()
binding.llRecent.setOnClickListener { binding.llRecent.setOnClickListener {
changeRecentUI() changeRecentUI()
} }
...@@ -122,8 +125,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -122,8 +125,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
val appName = resources.getString(R.string.app_name) val appName = resources.getString(R.string.app_name)
binding.tvTittle.text = colorSpanner(appName, Color.parseColor("#FD1010"), 0, 3) binding.tvTittle.text = colorSpanner(appName, Color.parseColor("#FD1010"), 0, 3)
navController.popBackStack()
navController.navigate(R.id.homeFragment) if (getNavCurrentFragment() !is HomeFragment) {
navController.popBackStack()
navController.navigate(R.id.homeFragment)
}
} }
private fun changeRecentUI() { private fun changeRecentUI() {
...@@ -132,8 +139,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -132,8 +139,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.tvRecent.isSelected = true binding.tvRecent.isSelected = true
binding.tvTittle.text = resources.getString(R.string.recent) binding.tvTittle.text = resources.getString(R.string.recent)
navController.popBackStack()
navController.navigate(R.id.recentFragment) if (getNavCurrentFragment() !is RecentFragment) {
navController.popBackStack()
navController.navigate(R.id.recentFragment)
}
} }
private fun changeSettingUI() { private fun changeSettingUI() {
...@@ -142,8 +153,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -142,8 +153,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.tvSetting.isSelected = true binding.tvSetting.isSelected = true
binding.tvTittle.text = resources.getString(R.string.settings) binding.tvTittle.text = resources.getString(R.string.settings)
navController.popBackStack() if (getNavCurrentFragment() !is SettingFragment) {
navController.navigate(R.id.settingFragment) navController.popBackStack()
navController.navigate(R.id.settingFragment)
}
} }
} }
\ No newline at end of file
package com.base.pdfoneread.ui.search package com.base.pdfoneread.ui.search
import android.graphics.Color import android.graphics.Color
import android.view.View
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.angcyo.tablayout.delegate2.ViewPager2Delegate import com.angcyo.tablayout.delegate2.ViewPager2Delegate
...@@ -17,7 +15,6 @@ import com.base.pdfoneread.databinding.ActivitySearchBinding ...@@ -17,7 +15,6 @@ import com.base.pdfoneread.databinding.ActivitySearchBinding
import com.base.pdfoneread.ui.BaseActivity import com.base.pdfoneread.ui.BaseActivity
import com.base.pdfoneread.utils.BarUtils import com.base.pdfoneread.utils.BarUtils
import com.base.pdfoneread.utils.LogEx import com.base.pdfoneread.utils.LogEx
import java.io.File
class SearchActivity : BaseActivity<ActivitySearchBinding>() { class SearchActivity : BaseActivity<ActivitySearchBinding>() {
...@@ -46,6 +43,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -46,6 +43,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
private val fragments by lazy { private val fragments by lazy {
mutableListOf(allPage, pdfPage, wordPage, excelPage, pptPage) mutableListOf(allPage, pdfPage, wordPage, excelPage, pptPage)
} }
var currentPage: SearchPageFragment? = allPage
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true) BarUtils.setStatusBarLightMode(this, true)
...@@ -66,8 +64,6 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -66,8 +64,6 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
} }
false false
} }
searchDocument()
} }
private var pageAdapter: FragmentStateAdapter? = null private var pageAdapter: FragmentStateAdapter? = null
...@@ -83,6 +79,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -83,6 +79,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
} }
binding.viewPager2.run { binding.viewPager2.run {
offscreenPageLimit = 5
isUserInputEnabled = true isUserInputEnabled = true
//https://www.jianshu.com/p/f69bd30cf5b0 //https://www.jianshu.com/p/f69bd30cf5b0
//FragmentStateAdapter 这里必须传人fragment //FragmentStateAdapter 这里必须传人fragment
...@@ -97,6 +94,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -97,6 +94,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
} }
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
currentPage = fragments[position]
} }
}) })
} }
...@@ -159,7 +157,8 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -159,7 +157,8 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
} }
private fun searchDocument() { private fun searchDocument() {
val search = binding.edit.text.toString()
currentPage?.searchContent(search)
} }
companion object { companion object {
......
...@@ -16,18 +16,28 @@ import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PPT ...@@ -16,18 +16,28 @@ import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PPT
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_WORD import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfoneread.databinding.FragmentSearchPageBinding import com.base.pdfoneread.databinding.FragmentSearchPageBinding
import com.base.pdfoneread.ui.document.DocumentAdapter import com.base.pdfoneread.ui.document.DocumentAdapter
import com.base.pdfoneread.ui.document.GlobalExcelList
import com.base.pdfoneread.ui.document.GlobalPdfList
import com.base.pdfoneread.ui.document.GlobalPptList
import com.base.pdfoneread.ui.document.GlobalWordList
import com.base.pdfoneread.ui.document.getAllDocument import com.base.pdfoneread.ui.document.getAllDocument
import com.base.pdfoneread.ui.document.getExcelDocument import com.base.pdfoneread.ui.document.getExcelDocument
import com.base.pdfoneread.ui.document.getGlobalAllList
import com.base.pdfoneread.ui.document.getPdfDocument import com.base.pdfoneread.ui.document.getPdfDocument
import com.base.pdfoneread.ui.document.getPptDocument import com.base.pdfoneread.ui.document.getPptDocument
import com.base.pdfoneread.ui.document.getRvAdList
import com.base.pdfoneread.ui.document.getWordDocument import com.base.pdfoneread.ui.document.getWordDocument
import com.base.pdfoneread.utils.LogEx
import com.base.pdfoneread.utils.updateMediaStore import com.base.pdfoneread.utils.updateMediaStore
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.io.File
import java.util.Locale
class SearchPageFragment() : Fragment() { class SearchPageFragment() : Fragment() {
private val TAG = "SearchPageFragment"
private var type = TYPE_PDF private var type = TYPE_PDF
private var adapter: DocumentAdapter? = null private var adapter: DocumentAdapter? = null
private lateinit var binding: FragmentSearchPageBinding private lateinit var binding: FragmentSearchPageBinding
...@@ -63,64 +73,110 @@ class SearchPageFragment() : Fragment() { ...@@ -63,64 +73,110 @@ class SearchPageFragment() : Fragment() {
} }
binding.rv.adapter = adapter binding.rv.adapter = adapter
initData() binding.swipeRefreshLayout.setOnRefreshListener {
initData()
}
initPreData()
}
private fun initPreData() {
val list = when (type) {
TYPE_PDF -> {
GlobalPdfList
}
TYPE_WORD -> {
GlobalWordList
}
TYPE_EXCEL -> {
GlobalExcelList
}
TYPE_PPT -> {
GlobalPptList
}
else -> {
getGlobalAllList()
}
}
listRunMain(list)
} }
private fun initData() { private fun initData() {
LogEx.logDebug(TAG, "initData start type=$type isResumed=$isResumed isDetached=$isDetached")
val activity = requireActivity() as SearchActivity?
activity ?: return
if (activity.currentPage == this) {
binding.swipeRefreshLayout.isRefreshing = true
}
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
requireContext().updateMediaStore() requireContext().updateMediaStore()
val list: List<DocumentBean> val list: List<DocumentBean> = when (type) {
when (type) {
TYPE_PDF -> { TYPE_PDF -> {
list = getPdfDocument(requireContext()) getPdfDocument(requireContext())
} }
TYPE_WORD -> { TYPE_WORD -> {
list = getWordDocument(requireContext()) getWordDocument(requireContext())
} }
TYPE_EXCEL -> { TYPE_EXCEL -> {
list = getExcelDocument(requireContext()) getExcelDocument(requireContext())
} }
TYPE_PPT -> { TYPE_PPT -> {
list = getPptDocument(requireContext()) getPptDocument(requireContext())
} }
else -> { else -> {
list = getAllDocument(requireContext()) getAllDocument(requireContext())
} }
} }
launch(Dispatchers.Main) { listRunMain(list)
if (list.isEmpty()) { }
binding.llEmpty.visibility = View.VISIBLE }
adapter?.submitList(listOf())
val flag = AdmobHelper.isShowRvNativeAd() private fun listRunMain(list: List<DocumentBean>) {
if (flag) { lifecycleScope.launch(Dispatchers.Main) {
binding.flAd.visibility = View.VISIBLE if (list.isEmpty()) {
AdmobNativeUtils.showNativeAd(requireActivity(), binding.flAd, R.layout.layout_admob_document) binding.llEmpty.visibility = View.VISIBLE
} adapter?.submitList(listOf())
} else { val flag = AdmobHelper.isShowRvNativeAd()
binding.llEmpty.visibility = View.GONE if (flag) {
binding.flAd.visibility = View.GONE binding.flAd.visibility = View.VISIBLE
adapter?.submitList(getRvAdList(list)) AdmobNativeUtils.showNativeAd(requireActivity(), binding.flAd, R.layout.layout_admob_document)
} }
} else {
binding.llEmpty.visibility = View.GONE
binding.flAd.visibility = View.GONE
adapter?.submitList(getRvAdList(list))
}
LogEx.logDebug(TAG, "initData end type=$type isVisible=$isVisible")
if (isVisible) {
binding.swipeRefreshLayout.isRefreshing = false
} }
} }
} }
private fun getRvAdList(list: List<DocumentBean>): List<DocumentBean> { fun searchContent(search: String) {
val flag = AdmobHelper.isShowRvNativeAd() lifecycleScope.launch(Dispatchers.IO) {
if (flag) { val searchList =
val arrayList = arrayListOf<DocumentBean>() adapter?.items?.filter {
arrayList.addAll(list) File(it.path).name.lowercase(Locale.ENGLISH).contains(search.lowercase(Locale.ENGLISH))
arrayList.add(1, DocumentBean().apply { isAd = true }) }
return arrayList launch(Dispatchers.Main) {
adapter?.submitList(searchList)
}
} }
return list
} }
} }
\ No newline at end of file
...@@ -189,6 +189,7 @@ ...@@ -189,6 +189,7 @@
android:id="@+id/card_tool" android:id="@+id/card_tool"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="80dp" android:layout_height="80dp"
android:visibility="gone"
android:layout_marginHorizontal="30dp" android:layout_marginHorizontal="30dp"
android:layout_marginBottom="50dp" android:layout_marginBottom="50dp"
app:cardCornerRadius="25dp" app:cardCornerRadius="25dp"
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
android:id="@+id/fl_tab" android:id="@+id/fl_tab"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="8dp"
android:background="@color/white" android:background="@color/white"
app:layout_constraintTop_toBottomOf="@id/fl_fanhui"> app:layout_constraintTop_toBottomOf="@id/fl_fanhui">
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
android:id="@+id/viewPager2" android:id="@+id/viewPager2"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginVertical="18dp" android:layout_marginVertical="8dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl_tab" /> app:layout_constraintTop_toBottomOf="@id/fl_tab" />
......
...@@ -15,13 +15,20 @@ ...@@ -15,13 +15,20 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/rv"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/swipeRefreshLayout"
android:layout_marginVertical="16dp" android:layout_height="match_parent">
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_document" /> <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginVertical="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_document" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout> </LinearLayout>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment