Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
B
Browser White
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Browser White
Commits
5a2da363
Commit
5a2da363
authored
Aug 15, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
9c9733aa
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
321 additions
and
371 deletions
+321
-371
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+2
-2
NewsBean.kt
app/src/main/java/com/base/browserwhite/bean/NewsBean.kt
+0
-1
HeadWebsiteAdapter.kt
...va/com/base/browserwhite/ui/adapter/HeadWebsiteAdapter.kt
+54
-0
HeaderAdapter.kt
...in/java/com/base/browserwhite/ui/adapter/HeaderAdapter.kt
+22
-0
NewsAdapter.kt
...main/java/com/base/browserwhite/ui/adapter/NewsAdapter.kt
+18
-54
NewsAdapter2.kt
...ain/java/com/base/browserwhite/ui/adapter/NewsAdapter2.kt
+0
-60
WebsiteAdapter.kt
...n/java/com/base/browserwhite/ui/adapter/WebsiteAdapter.kt
+2
-2
HomeFragment.kt
...in/java/com/base/browserwhite/ui/fragment/HomeFragment.kt
+59
-61
AESHelper.kt
app/src/main/java/com/base/browserwhite/utils/AESHelper.kt
+1
-1
ConfigHelper.kt
...src/main/java/com/base/browserwhite/utils/ConfigHelper.kt
+1
-1
NewsUtils.kt
app/src/main/java/com/base/browserwhite/utils/NewsUtils.kt
+1
-1
fragment_home.xml
app/src/main/res/layout/fragment_home.xml
+16
-188
item_head_1.xml
app/src/main/res/layout/item_head_1.xml
+133
-0
item_website_head.xml
app/src/main/res/layout/item_website_head.xml
+12
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
5a2da363
...
...
@@ -27,7 +27,7 @@
android:theme=
"@style/Theme.BrowserWhite"
tools:targetApi=
"34"
>
<activity
android:name=
".ui.activity.Splash
Activity"
android:name=
".ui.activity.Main
Activity"
android:exported=
"true"
android:launchMode=
"singleTask"
>
<intent-filter>
...
...
@@ -37,7 +37,7 @@
</intent-filter>
</activity>
<activity
android:name=
".ui.activity.
Main
Activity"
android:name=
".ui.activity.
Splash
Activity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
...
...
app/src/main/java/com/base/browserwhite/bean/NewsBean.kt
View file @
5a2da363
...
...
@@ -11,5 +11,4 @@ class NewsBean(
val
type
:
Int
=
0
,
val
linkPath
:
String
=
""
,
//网站链接
)
{
var
isBind
:
Boolean
=
false
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/ui/adapter/HeadWebsiteAdapter.kt
0 → 100644
View file @
5a2da363
package
com.base.browserwhite.ui.adapter
import
android.content.Context
import
android.content.Intent
import
android.view.View
import
android.view.ViewGroup
import
androidx.recyclerview.widget.GridLayoutManager
import
androidx.recyclerview.widget.ItemTouchHelper
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
com.base.browserwhite.R
import
com.base.browserwhite.bean.WebSiteBean
import
com.base.browserwhite.databinding.ItemWebsiteHeadBinding
import
com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
import
com.base.browserwhite.ui.activity.webstore.WevStoreActivity
import
com.base.browserwhite.ui.views.itemtouch.MyItemTouchHelperCallBack
import
com.base.browserwhite.utils.XmlEx.inflate
import
com.chad.library.adapter4.BaseSingleItemAdapter
class
HeadWebsiteAdapter
:
BaseSingleItemAdapter
<
List
<
WebSiteBean
>,
HeadWebsiteAdapter
.
VH
>()
{
inner
class
VH
(
view
:
View
)
:
RecyclerView
.
ViewHolder
(
view
)
var
flag
=
false
override
fun
onBindViewHolder
(
holder
:
VH
,
item
:
List
<
WebSiteBean
>?)
{
if
(
flag
)
{
return
}
flag
=
true
val
binding
=
ItemWebsiteHeadBinding
.
bind
(
holder
.
itemView
)
val
context
=
holder
.
itemView
.
context
binding
.
rvWebsite
.
layoutManager
=
GridLayoutManager
(
context
,
4
,
LinearLayoutManager
.
VERTICAL
,
false
)
val
websiteAdapter
=
WebsiteAdapter
(
0
)
{
bean
->
if
(
bean
.
name
==
"Increase"
)
{
context
.
startActivity
(
Intent
(
context
,
WevStoreActivity
::
class
.
java
))
}
else
{
context
.
startActivity
(
Intent
(
context
,
WebBrowserActivity
::
class
.
java
).
apply
{
putExtra
(
"uri"
,
bean
.
url
)
})
}
}
binding
.
rvWebsite
.
adapter
=
websiteAdapter
val
itemTouchHelper
=
ItemTouchHelper
(
MyItemTouchHelperCallBack
())
itemTouchHelper
.
attachToRecyclerView
(
binding
.
rvWebsite
)
websiteAdapter
.
setData
(
item
)
}
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
VH
{
return
VH
(
R
.
layout
.
item_website_head
.
inflate
(
parent
))
}
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/ui/adapter/HeaderAdapter.kt
0 → 100644
View file @
5a2da363
package
com.base.browserwhite.ui.adapter
import
android.content.Context
import
android.view.View
import
android.view.ViewGroup
import
androidx.recyclerview.widget.RecyclerView
import
com.base.browserwhite.R
import
com.base.browserwhite.utils.XmlEx.inflate
import
com.chad.library.adapter4.BaseSingleItemAdapter
class
HeaderAdapter
:
BaseSingleItemAdapter
<
Any
,
HeaderAdapter
.
VH
>()
{
class
VH
(
view
:
View
):
RecyclerView
.
ViewHolder
(
view
)
override
fun
onBindViewHolder
(
holder
:
VH
,
item
:
Any
?)
{
}
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
VH
{
return
VH
(
R
.
layout
.
item_head_1
.
inflate
(
parent
))
}
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/ui/adapter/NewsAdapter.kt
View file @
5a2da363
package
com.base.browserwhite.ui.adapter
import
android.annotation.SuppressLint
import
android.content.Context
import
android.graphics.drawable.Drawable
import
android.view.View
import
android.view.ViewGroup
import
androidx.lifecycle.LifecycleCoroutineScope
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView.ViewHolder
import
com.base.browserwhite.R
import
com.base.browserwhite.bean.MediaBean
import
com.base.browserwhite.bean.NewsBean
import
com.base.browserwhite.databinding.ItemNewsBinding
import
com.base.browserwhite.utils.KotlinExt.toFormatTime
import
com.base.browserwhite.utils.LogEx
import
com.base.browserwhite.utils.NewsUtils
import
com.base.browserwhite.utils.XmlEx.inflate
import
com.bumptech.glide.Glide
import
com.bumptech.glide.load.DataSource
import
com.bumptech.glide.load.engine.GlideException
import
com.bumptech.glide.request.RequestListener
import
com.bumptech.glide.request.target.Target
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
com.chad.library.adapter4.BaseQuickAdapter
class
NewsAdapter
(
private
val
lifecycleScope
:
LifecycleCoroutineScope
)
:
RecyclerView
.
Adapter
<
NewsAdapter
.
NewsViewHolder
>()
{
class
NewsAdapter
:
BaseQuickAdapter
<
NewsBean
,
NewsAdapter
.
NewsViewHolder
>()
{
private
val
TAG
=
"NewsAdapter"
private
val
beanList
=
arrayListOf
<
NewsBean
>()
inner
class
NewsViewHolder
(
view
:
View
)
:
ViewHolder
(
view
)
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
NewsViewHolder
{
return
NewsViewHolder
(
R
.
layout
.
item_news
.
inflate
(
parent
))
}
override
fun
getItemCount
():
Int
{
return
beanList
.
size
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
NewsViewHolder
{
return
NewsViewHolder
(
R
.
layout
.
item_news
.
inflate
(
parent
))
}
override
fun
onBindViewHolder
(
holder
:
NewsViewHolder
,
position
:
Int
)
{
val
log
=
"position=${holder.position} "
+
"position=${holder.bindingAdapterPosition} "
+
"position=${holder.absoluteAdapterPosition} "
+
"position=${holder.layoutPosition}"
LogEx
.
logDebug
(
TAG
,
log
)
override
fun
onBindViewHolder
(
holder
:
NewsViewHolder
,
position
:
Int
,
bean
:
NewsBean
?)
{
LogEx
.
logDebug
(
TAG
,
"onBindViewHolder"
)
if
(
bean
==
null
)
{
return
}
val
binding
=
ItemNewsBinding
.
bind
(
holder
.
itemView
)
val
bean
=
beanList
[
holder
.
position
]
// val bean = beanList[position]
val
context
=
holder
.
itemView
.
context
Glide
.
with
(
context
).
load
(
bean
.
orgImgPath
).
listener
(
object
:
RequestListener
<
Drawable
>
{
override
fun
onLoadFailed
(
...
...
@@ -59,8 +47,6 @@ class NewsAdapter(
target
:
Target
<
Drawable
>,
isFirstResource
:
Boolean
):
Boolean
{
LogEx
.
logDebug
(
TAG
,
"onLoadFailed $log"
)
// beanList.remove(bean)
return
true
}
...
...
@@ -81,35 +67,13 @@ class NewsAdapter(
}
binding
.
tvMediaName
.
text
=
bean
.
mediaName
binding
.
tvPublishTime
.
text
=
bean
.
publishTime
.
toFormatTime
()
bean
.
isBind
=
true
}
@SuppressLint
(
"NotifyDataSetChanged"
)
fun
loadMore
(
categoryId
:
Int
=
0
,
errorCallBack
:
(()
->
Unit
)?
=
null
,
callBack
:
(()
->
Unit
)?
=
null
)
{
val
position
=
beanList
.
size
val
last
=
if
(
beanList
.
isEmpty
())
null
else
beanList
.
last
()
LogEx
.
logDebug
(
TAG
,
"newsId=${last?.newsId}"
)
NewsUtils
.
requestNews
(
categoryId
,
last
?.
newsId
,
errorCallBack
=
{
errorCallBack
?.
invoke
()
})
{
beanList
.
addAll
(
it
)
if
(
beanList
.
size
>
150
)
{
val
item100
=
beanList
.
subList
(
0
,
100
)
beanList
.
removeAll
(
item100
.
toSet
())
}
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
this
@NewsAdapter
.
notifyItemInserted
(
position
)
delay
(
2000
)
callBack
?.
invoke
()
}
fun
getLastPageNumber
():
Long
?
{
return
if
(
items
.
isEmpty
())
{
null
}
else
{
items
.
last
().
newsId
}
}
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/ui/adapter/NewsAdapter2.kt
deleted
100644 → 0
View file @
9c9733aa
package
com.base.browserwhite.ui.adapter
import
android.graphics.drawable.Drawable
import
android.view.View
import
android.view.ViewGroup
import
androidx.recyclerview.widget.RecyclerView
import
com.base.browserwhite.databinding.ItemNewsBinding
import
com.base.browserwhite.utils.KotlinExt.toFormatTime
import
com.base.browserwhite.utils.LogEx
import
com.bumptech.glide.Glide
import
com.bumptech.glide.load.DataSource
import
com.bumptech.glide.load.engine.GlideException
import
com.bumptech.glide.request.RequestListener
import
com.bumptech.glide.request.target.Target
import
com.chad.library.adapter4.loadState.LoadState
import
com.chad.library.adapter4.loadState.LoadStateAdapter
//class NewsAdapter2: LoadStateAdapter<NewsAdapter2.NewsViewHolder>() {
// inner class NewsViewHolder(view: View) : RecyclerView.ViewHolder(view)
//
// override fun onBindViewHolder(holder: NewsViewHolder, loadState: LoadState) {
// val binding = ItemNewsBinding.bind(holder.itemView)
// val bean = beanList[holder.position]
// val context = holder.itemView.context
// Glide.with(context).load(bean.orgImgPath).listener(object : RequestListener<Drawable> {
// override fun onLoadFailed(
// e: GlideException?,
// model: Any?,
// target: Target<Drawable>,
// isFirstResource: Boolean
// ): Boolean {
// LogEx.logDebug(TAG, "onLoadFailed $log")
//// beanList.remove(bean)
// return true
// }
//
// override fun onResourceReady(
// resource: Drawable,
// model: Any,
// target: Target<Drawable>?,
// dataSource: DataSource,
// isFirstResource: Boolean
// ): Boolean {
// return false
// }
//
// }).centerCrop().into(binding.ivMedia)
// binding.tvTittle.text = bean.headline
// runCatching {
// Glide.with(context).load(bean.mediaIcon).into(binding.ivIcon)
// }
// binding.tvMediaName.text = bean.mediaName
// binding.tvPublishTime.text = bean.publishTime.toFormatTime()
// bean.isBind = true
// }
//
// override fun onCreateViewHolder(parent: ViewGroup, loadState: LoadState): NewsViewHolder {
// TODO("Not yet implemented")
// }
//}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/ui/adapter/WebsiteAdapter.kt
View file @
5a2da363
...
...
@@ -93,10 +93,10 @@ class WebsiteAdapter(val uiType: Int = 0, val click: (bean: WebSiteBean) -> Unit
}
@SuppressLint
(
"NotifyDataSetChanged"
)
fun
setData
(
webSiteList
:
List
<
WebSiteBean
>,
addBean
:
WebSiteBean
?
=
null
)
{
fun
setData
(
webSiteList
:
List
<
WebSiteBean
>?)
{
if
(
webSiteList
.
isNullOrEmpty
())
return
beanList
.
clear
()
beanList
.
addAll
(
webSiteList
)
addBean
?.
let
{
beanList
.
add
(
it
)
}
notifyDataSetChanged
()
}
...
...
app/src/main/java/com/base/browserwhite/ui/fragment/HomeFragment.kt
View file @
5a2da363
...
...
@@ -4,20 +4,7 @@ import android.content.Intent
import
android.view.KeyEvent
import
android.view.inputmethod.EditorInfo.IME_ACTION_DONE
import
android.widget.TextView
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.GridLayoutManager
import
androidx.recyclerview.widget.ItemTouchHelper
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView.OnScrollListener
import
androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE
import
com.base.browserwhite.R
import
com.base.browserwhite.bean.ConstObject.BAIDU
import
com.base.browserwhite.bean.ConstObject.BING
import
com.base.browserwhite.bean.ConstObject.DUCKDUCKGO
import
com.base.browserwhite.bean.ConstObject.GOOGLE
import
com.base.browserwhite.bean.ConstObject.YAHOO
import
com.base.browserwhite.bean.ConstObject.YANDEX
import
com.base.browserwhite.bean.WebSiteBean
import
com.base.browserwhite.bean.defaultValue
import
com.base.browserwhite.bean.webSiteGroupBeanList
...
...
@@ -25,14 +12,15 @@ import com.base.browserwhite.databinding.FragmentHomeBinding
import
com.base.browserwhite.service.StayNotificationService.Companion.restartStartStayNotification
import
com.base.browserwhite.ui.activity.scanqrc.ScanQRCActivity
import
com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
import
com.base.browserwhite.ui.activity.webstore.WevStoreActivity
import
com.base.browserwhite.ui.adapter.HeadWebsiteAdapter
import
com.base.browserwhite.ui.adapter.HeaderAdapter
import
com.base.browserwhite.ui.adapter.NewsAdapter
import
com.base.browserwhite.ui.adapter.WebsiteAdapter
import
com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import
com.base.browserwhite.ui.views.itemtouch.MyItemTouchHelperCallBack
import
com.base.browserwhite.utils.AppPreferences
import
com.base.browserwhite.utils.LogEx
import
java.util.concurrent.atomic.AtomicBoolean
import
com.base.browserwhite.utils.NewsUtils.requestNews
import
com.chad.library.adapter4.QuickAdapterHelper
import
com.chad.library.adapter4.loadState.LoadState
import
com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter
class
HomeFragment
:
BaseFragment
<
FragmentHomeBinding
>()
{
...
...
@@ -42,61 +30,65 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
FragmentHomeBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
websiteAdapter
:
WebsiteAdapter
private
lateinit
var
itemTouchHelper
:
ItemTouchHelper
private
lateinit
var
newsAdapter
:
NewsAdapter
private
var
isLoadingMore
:
AtomicBoolean
=
AtomicBoolean
(
false
)
private
lateinit
var
helper
:
QuickAdapterHelper
private
var
isLoading
=
false
override
fun
setView
()
{
binding
.
rvWeb
.
layoutManager
=
GridLayoutManager
(
requireContext
(),
4
,
LinearLayoutManager
.
VERTICAL
,
false
)
websiteAdapter
=
WebsiteAdapter
(
0
)
{
bean
->
if
(
bean
.
name
==
"Increase"
)
{
requireContext
().
startActivity
(
Intent
(
requireContext
(),
WevStoreActivity
::
class
.
java
))
}
else
{
requireContext
().
startActivity
(
Intent
(
requireContext
(),
WebBrowserActivity
::
class
.
java
).
apply
{
putExtra
(
"uri"
,
bean
.
url
)
})
}
}
binding
.
rvWeb
.
adapter
=
websiteAdapter
itemTouchHelper
=
ItemTouchHelper
(
MyItemTouchHelperCallBack
())
itemTouchHelper
.
attachToRecyclerView
(
binding
.
rvWeb
)
newsAdapter
=
NewsAdapter
()
helper
=
QuickAdapterHelper
.
Builder
(
newsAdapter
).
setTrailingLoadStateAdapter
(
object
:
TrailingLoadStateAdapter
.
OnTrailingListener
{
override
fun
onLoad
()
{
LogEx
.
logDebug
(
TAG
,
"onLoad"
)
requestMore
()
}
newsAdapter
=
NewsAdapter
(
lifecycleScope
)
binding
.
rvNews
.
adapter
=
newsAdapter
binding
.
rvNews
.
addOnScrollListener
(
object
:
OnScrollListener
()
{
var
i
=
0
override
fun
onFailRetry
()
{
LogEx
.
logDebug
(
TAG
,
"onFailRetry"
)
requestMore
()
}
override
fun
onScrolled
(
recyclerView
:
RecyclerView
,
dx
:
Int
,
dy
:
Int
)
{
super
.
onScrolled
(
recyclerView
,
dx
,
dy
)
}
override
fun
isAllowLoading
():
Boolean
{
LogEx
.
logDebug
(
TAG
,
"isLoading=$isLoading"
)
return
!
isLoading
}
}).
build
()
// 设置预加载,请调用以下方法
// helper.trailingLoadStateAdapter?.preloadSize = 1
helper
.
addBeforeAdapter
(
0
,
HeaderAdapter
())
override
fun
onScrollStateChanged
(
recyclerView
:
RecyclerView
,
newState
:
Int
)
{
super
.
onScrollStateChanged
(
recyclerView
,
newState
)
i
++
if
(
newState
==
SCROLL_STATE_IDLE
&&
!
binding
.
rvNews
.
canScrollVertically
(
1
))
{
loadMoreData
()
binding
.
rv
.
adapter
=
helper
.
adapter
requestMore
()
}
fun
requestMore
()
{
isLoading
=
true
helper
.
trailingLoadState
=
LoadState
.
None
val
lastNewsId
=
newsAdapter
.
getLastPageNumber
()
LogEx
.
logDebug
(
TAG
,
"requestMore lastNewsId=$lastNewsId"
)
requestNews
(
pageNumber
=
lastNewsId
,
errorCallBack
=
{
isLoading
=
false
LogEx
.
logDebug
(
TAG
,
"errorCallBack"
)
},
beanCallBack
=
{
isLoading
=
false
binding
.
root
.
post
{
LogEx
.
logDebug
(
TAG
,
"beanCallBack"
)
if
(
lastNewsId
==
null
)
{
newsAdapter
.
submitList
(
it
)
}
else
{
newsAdapter
.
addAll
(
it
)
}
helper
.
trailingLoadState
=
LoadState
.
NotLoading
(
false
)
}
})
loadMoreData
()
}
private
fun
loadMoreData
()
{
if
(
isLoadingMore
.
get
())
return
isLoadingMore
.
set
(
true
)
LogEx
.
logDebug
(
TAG
,
"load data"
)
newsAdapter
.
loadMore
(
errorCallBack
=
{
isLoadingMore
.
set
(
false
)
},
callBack
=
{
LogEx
.
logDebug
(
TAG
,
"loadMore BACK"
)
isLoadingMore
.
set
(
false
)
})
}
override
fun
onResume
()
{
super
.
onResume
()
...
...
@@ -108,10 +100,16 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
val
recommendWebSite
=
webSiteGroupBeanList
.
flatMap
{
it
.
items
}.
filter
{
bean
->
AppPreferences
.
getInstance
().
getBoolean
(
"${bean.id}_${bean.name}"
,
defaultValue
(
bean
.
name
))
}
websiteAdapter
.
setData
(
recommendWebSite
,
WebSiteBean
(
name
=
"Increase"
).
apply
{
val
list
=
arrayListOf
<
WebSiteBean
>()
list
.
addAll
(
recommendWebSite
)
list
.
add
(
WebSiteBean
(
name
=
"Increase"
).
apply
{
localIcon
=
R
.
mipmap
.
increase
increase
=
true
})
val
headWebsiteAdapter
=
HeadWebsiteAdapter
()
headWebsiteAdapter
.
setItem
(
list
,
null
)
helper
.
addBeforeAdapter
(
1
,
headWebsiteAdapter
)
}
override
fun
setListener
()
{
...
...
app/src/main/java/com/base/browserwhite/utils/AESHelper.kt
View file @
5a2da363
...
...
@@ -8,7 +8,7 @@ import javax.crypto.spec.SecretKeySpec
object
AESHelper
{
private
const
val
aesKey
=
"
g78bbcrtr4iaeekw
"
private
const
val
aesKey
=
"
ez9r013lcubfpepu
"
private
val
cipher
by
lazy
{
Cipher
.
getInstance
(
"AES/GCM/NoPadding"
)
...
...
app/src/main/java/com/base/browserwhite/utils/ConfigHelper.kt
View file @
5a2da363
...
...
@@ -32,7 +32,7 @@ object ConfigHelper {
var
mustShowNativeAd
:
Boolean
=
false
// 正式包名
const
val
packageName
=
"com.
pdfninja.pdfreaderandimagetopdf.bmw
"
const
val
packageName
=
"com.
ok.ai.browser.jojo
"
val
noLoadingActivities
=
listOf
(
"full"
,
// 过滤全屏广告
...
...
app/src/main/java/com/base/browserwhite/utils/NewsUtils.kt
View file @
5a2da363
...
...
@@ -35,7 +35,7 @@ object NewsUtils {
fun
requestNews
(
categoryId
:
Int
=
0
,
pageNumber
:
Long
?
=
null
,
errorCallBack
:
()->
Unit
,
errorCallBack
:
()
->
Unit
,
beanCallBack
:
(
beanList
:
List
<
NewsBean
>)
->
Unit
)
{
val
pkg
=
ConfigHelper
.
packageName
...
...
app/src/main/res/layout/fragment_home.xml
View file @
5a2da363
...
...
@@ -169,199 +169,27 @@
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id=
"@+id/rv"
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#FDFDFD"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
>
<
LinearLayout
<
View
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:baselineAligned=
"false"
android:orientation=
"horizontal"
tools:ignore=
"UselessParent"
>
<LinearLayout
android:id=
"@+id/ll_news"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"?android:attr/selectableItemBackground"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:src=
"@mipmap/news"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:layout_marginBottom=
"5dp"
android:text=
"News"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_clean"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"?android:attr/selectableItemBackground"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:src=
"@mipmap/clean"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:layout_marginBottom=
"5dp"
android:text=
"Clean"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_process"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"?android:attr/selectableItemBackground"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:visibility=
"invisible"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:src=
"@mipmap/process"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:layout_marginBottom=
"5dp"
android:text=
"Process"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_bookmark"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"?android:attr/selectableItemBackground"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:visibility=
"invisible"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:src=
"@mipmap/bookmark"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:layout_marginBottom=
"5dp"
android:text=
"Bookmark"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1px"
android:layout_marginHorizontal=
"26dp"
android:layout_marginTop=
"16dp"
android:background=
"#E5E6EB"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_web"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"40dp"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical|start"
android:text=
"News"
android:textColor=
"@color/black"
android:textSize=
"18sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_more"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical|end"
android:text=
"More"
android:textColor=
"#0571ED"
android:textSize=
"15sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_news"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem=
"@layout/item_news"
/>
android:layout_height=
"1px"
android:layout_marginHorizontal=
"26dp"
android:layout_marginTop=
"16dp"
android:background=
"#E5E6EB"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
app/src/main/res/layout/item_head_1.xml
0 → 100644
View file @
5a2da363
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:baselineAligned=
"false"
android:orientation=
"horizontal"
tools:ignore=
"UselessParent"
>
<LinearLayout
android:id=
"@+id/ll_news"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"?android:attr/selectableItemBackground"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:src=
"@mipmap/news"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:layout_marginBottom=
"5dp"
android:text=
"News"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_clean"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"?android:attr/selectableItemBackground"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:src=
"@mipmap/clean"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:layout_marginBottom=
"5dp"
android:text=
"Clean"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_process"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"?android:attr/selectableItemBackground"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:visibility=
"invisible"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:src=
"@mipmap/process"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:layout_marginBottom=
"5dp"
android:text=
"Process"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_bookmark"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"?android:attr/selectableItemBackground"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:visibility=
"invisible"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:src=
"@mipmap/bookmark"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"8.5dp"
android:layout_marginBottom=
"5dp"
android:text=
"Bookmark"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</LinearLayout>
app/src/main/res/layout/item_website_head.xml
0 → 100644
View file @
5a2da363
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/rv_website"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_span=
"3"
app:layoutManager=
"androidx.recyclerview.widget.GridLayoutManager"
tools:listitem=
"@layout/item_website_grid"
>
</androidx.recyclerview.widget.RecyclerView>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment