Commit 429245cd authored by wanglei's avatar wanglei

...

parent 5634f6b3
...@@ -38,11 +38,17 @@ ...@@ -38,11 +38,17 @@
android:theme="@style/Theme.BrowserWhite" android:theme="@style/Theme.BrowserWhite"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
tools:targetApi="34"> tools:targetApi="34">
<activity
android:name=".ui.activity.bookmark.BookmarkFolderAddActivity"
android:exported="false" />
<activity
android:name=".ui.activity.bookmark.BookmarkFolderActivity"
android:exported="false" />
<activity <activity
android:name=".ui.activity.bookmark.BookmarkEditActivity" android:name=".ui.activity.bookmark.BookmarkEditActivity"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".ui.activity.bookmark.BookMarkActivity" android:name=".ui.activity.bookmark.BookmarkActivity"
android:exported="false" /> android:exported="false" />
<receiver <receiver
......
package com.base.browserwhite.bean package com.base.browserwhite.bean
data class BookmarkBean( data class BookmarkBean(
val folder: String = "", var folder: String = folderRoot,
var name: String = "", var name: String = "",
var url: String = "", var url: String = "",
val time: Long = 0, var isFolder: Boolean = false,
) { ) {
var showTime:Boolean=false
val viewType: Int = 0 val viewType: Int = 0
}
\ No newline at end of file companion object {
var folderRoot = "Root Directory"
}
}
...@@ -4,29 +4,48 @@ import android.graphics.Color ...@@ -4,29 +4,48 @@ import android.graphics.Color
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.browserwhite.bean.BookmarkBean import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.databinding.ActivityBookMarkBinding import com.base.browserwhite.databinding.ActivityBookmarkBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.SpBeanUtils import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY
import com.google.gson.Gson import com.google.gson.Gson
class BookMarkActivity : BaseActivity<ActivityBookMarkBinding>() { class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
override val binding: ActivityBookMarkBinding by lazy { private val TAG = "BookmarkActivity"
ActivityBookMarkBinding.inflate(layoutInflater) private var currentTab = BOOKMARK_TAB
override val binding: ActivityBookmarkBinding by lazy {
ActivityBookmarkBinding.inflate(layoutInflater)
} }
private lateinit var adapter: BookmarkAdapter private lateinit var bookmarkAdapter: BookmarkAdapter
private val bookmarkList = arrayListOf<BookmarkBean>()
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true) BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.WHITE) BarUtils.setStatusBarColor(this, Color.WHITE)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
adapter = BookmarkAdapter() bookmarkAdapter = BookmarkAdapter()
bookmarkAdapter.changeFolderAction = { folder ->
val list = bookmarkList.filter { it.folder == folder }
bookmarkAdapter.submitList(list)
}
changeBookmark()
}
private fun changeBookmark() {
binding.rv.adapter = bookmarkAdapter
bookmarkAdapter.submitList(bookmarkList)
}
override fun onResume() {
super.onResume()
initData() initData()
} }
...@@ -35,23 +54,26 @@ class BookMarkActivity : BaseActivity<ActivityBookMarkBinding>() { ...@@ -35,23 +54,26 @@ class BookMarkActivity : BaseActivity<ActivityBookMarkBinding>() {
} }
private fun initBookmarkData() { private fun initBookmarkData() {
bookmarkList.clear()
val list = SpBeanUtils.getSpBeanList(BOOKMARK_SP_KEY) val list = SpBeanUtils.getSpBeanList(BOOKMARK_SP_KEY)
val items = list.map { Gson().fromJson(it, BookmarkBean::class.java) } val items = list.map { Gson().fromJson(it, BookmarkBean::class.java) }
var time = ""
items.sortedBy { it.time }.forEach { bookmarkList.addAll(items)
if (time != it.time.toFormatTime()) { bookmarkAdapter.submitList(bookmarkList.filter { it.folder == bookmarkAdapter.currentFolder })
it.showTime = true
} else {
time = it.time.toFormatTime()
}
}
adapter.submitList(items)
} }
override fun initListener() { override fun initListener() {
super.initListener() super.initListener()
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
finishToMain() if (currentTab == BOOKMARK_TAB) {
if (bookmarkAdapter.canBeforeFolder()) {
bookmarkAdapter.beforeFolder()
} else {
finishToMain()
}
} else {
finishToMain()
}
} }
binding.flFanhui.setOnClickListener { binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
...@@ -63,6 +85,7 @@ class BookMarkActivity : BaseActivity<ActivityBookMarkBinding>() { ...@@ -63,6 +85,7 @@ class BookMarkActivity : BaseActivity<ActivityBookMarkBinding>() {
} }
binding.tvTabBookmark.isSelected = true binding.tvTabBookmark.isSelected = true
binding.tvTabHistory.isSelected = false binding.tvTabHistory.isSelected = false
currentTab = BOOKMARK_TAB
} }
binding.tvTabBookmark.callOnClick() binding.tvTabBookmark.callOnClick()
...@@ -72,10 +95,13 @@ class BookMarkActivity : BaseActivity<ActivityBookMarkBinding>() { ...@@ -72,10 +95,13 @@ class BookMarkActivity : BaseActivity<ActivityBookMarkBinding>() {
} }
binding.tvTabHistory.isSelected = true binding.tvTabHistory.isSelected = true
binding.tvTabBookmark.isSelected = false binding.tvTabBookmark.isSelected = false
currentTab = HISTORY_TAB
} }
} }
companion object {
private val BOOKMARK_TAB = "bookmark_tab"
private val HISTORY_TAB = "history_tab"
}
} }
\ No newline at end of file
package com.base.browserwhite.ui.activity.bookmark package com.base.browserwhite.ui.activity.bookmark
import android.content.Context import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.bean.BookmarkBean import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.databinding.ItemBookmarkBinding import com.base.browserwhite.databinding.ItemBookmarkBinding
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.XmlEx.inflate import com.base.browserwhite.utils.XmlEx.inflate
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
import java.util.Random
class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkHolder>() { class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkHolder>() {
var currentFolder = BookmarkBean.folderRoot
var changeFolderAction: ((folder: String) -> Unit)? = null
inner class BookmarkHolder(view: View) : ViewHolder(view) inner class BookmarkHolder(view: View) : ViewHolder(view)
override fun onBindViewHolder(holder: BookmarkHolder, position: Int, item: BookmarkBean?) { override fun onBindViewHolder(holder: BookmarkHolder, position: Int, item: BookmarkBean?) {
...@@ -21,8 +27,26 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH ...@@ -21,8 +27,26 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH
} }
val binding = ItemBookmarkBinding.bind(holder.itemView) val binding = ItemBookmarkBinding.bind(holder.itemView)
binding.flTime.isVisible = item.showTime val context = holder.itemView.context
binding.tvTime.text = item.time.toFormatTime() binding.tvName.text = item.name
if (!item.isFolder) {
binding.card.radius = context.resources.getDimension(R.dimen.dp_5)
binding.iv.visibility = View.GONE
binding.tvLetters.visibility = View.VISIBLE
binding.tvLetters.background = getRandomColorDrawable()
binding.tvLetters.text = item.name.first().toString()
} else {
binding.card.radius = 0f
binding.tvLetters.visibility = View.GONE
binding.iv.visibility = View.VISIBLE
binding.iv.setImageResource(R.mipmap.wenjiajia_bookmark)
}
binding.root.setOnClickListener {
if (!item.isFolder) return@setOnClickListener
currentFolder = item.name
changeFolderAction?.invoke(currentFolder)
}
} }
...@@ -39,4 +63,22 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH ...@@ -39,4 +63,22 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH
} }
return BookmarkHolder(layout.inflate(parent)) return BookmarkHolder(layout.inflate(parent))
} }
fun getRandomColorDrawable(): ColorDrawable {
val random = Random()
val red: Int = random.nextInt(256)
val green: Int = random.nextInt(256)
val blue: Int = random.nextInt(256)
val color = Color.rgb(red, green, blue)
return ColorDrawable(color)
}
fun canBeforeFolder(): Boolean {
return currentFolder != BookmarkBean.folderRoot
}
fun beforeFolder() {
currentFolder = BookmarkBean.folderRoot
changeFolderAction?.invoke(currentFolder)
}
} }
\ No newline at end of file
package com.base.browserwhite.ui.activity.bookmark package com.base.browserwhite.ui.activity.bookmark
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color import android.graphics.Color
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.core.widget.addTextChangedListener
import com.base.browserwhite.bean.BookmarkBean import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.databinding.ActivityBookmarkEditBinding import com.base.browserwhite.databinding.ActivityBookmarkEditBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY
import com.google.gson.Gson
class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() { class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() {
...@@ -25,11 +30,8 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() { ...@@ -25,11 +30,8 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() {
binding.editName.setText(editBookmark?.name) binding.editName.setText(editBookmark?.name)
binding.editUrl.setText(editBookmark?.url) binding.editUrl.setText(editBookmark?.url)
binding.ivSelectorNav.isSelected = true binding.ivSelectorNav.isSelected = true
if (editBookmark?.folder.equals("")) { binding.tvFolder.text = editBookmark?.folder
binding.tvFolder.text = "Root Folder" binding.tvSave.isEnabled = true
} else {
binding.tvFolder.text = editBookmark?.folder
}
} }
override fun initListener() { override fun initListener() {
...@@ -40,6 +42,31 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() { ...@@ -40,6 +42,31 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() {
binding.flFanhui.setOnClickListener { binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
binding.llFolder.setOnClickListener {
BookmarkFolderActivity.selectFolder = editBookmark?.folder ?: ""
launcher.launch(Intent(this, BookmarkFolderActivity::class.java)) {
editBookmark?.folder = it.data?.extras?.getString("Folder", "") ?: ""
binding.tvFolder.text = editBookmark?.folder ?: ""
}
}
binding.editUrl.addTextChangedListener {
binding.tvSave.isEnabled = !it.isNullOrEmpty()
}
binding.editName.addTextChangedListener {
binding.tvSave.isEnabled = !it.isNullOrEmpty()
}
binding.tvSave.setOnClickListener {
if (editBookmark == null) {
throw Exception("bug no BookmarkBean")
}
if (editBookmark?.folder != BookmarkBean.folderRoot) {
val folderBean = BookmarkBean(name = editBookmark?.folder ?: "", isFolder = true)
SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, Gson().toJson(folderBean))
}
SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, Gson().toJson(editBookmark))
finish()
}
} }
companion object { companion object {
......
package com.base.browserwhite.ui.activity.bookmark
import android.content.Intent
import android.graphics.Color
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import com.base.browserwhite.databinding.ActivityBookmarkFolderBinding
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_FOLDER_SP_KEY
class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() {
private lateinit var adapter: BookmarkFolderAdapter
override val binding: ActivityBookmarkFolderBinding by lazy {
ActivityBookmarkFolderBinding.inflate(layoutInflater)
}
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.WHITE)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
binding.ivRootSelector.isSelected = selectFolder == "Root Directory"
adapter = BookmarkFolderAdapter(selectFolder) {
setResult(0, Intent().putExtra("Folder", it))
finish()
}
binding.rv.adapter = adapter
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finish()
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
binding.ivNewFolder.setOnClickListener {
startActivity(Intent(this, BookmarkFolderAddActivity::class.java))
}
}
private fun initData() {
val spList = SpBeanUtils.getSpBeanList(BOOKMARK_FOLDER_SP_KEY)
adapter.submitList(spList)
}
override fun onResume() {
super.onResume()
initData()
}
companion object {
var selectFolder: String = "Root Directory"
}
}
\ No newline at end of file
package com.base.browserwhite.ui.activity.bookmark
import android.content.Context
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.browserwhite.R
import com.base.browserwhite.databinding.ItemBookmarkFolderBinding
import com.base.browserwhite.utils.XmlEx.inflate
import com.chad.library.adapter4.BaseQuickAdapter
class BookmarkFolderAdapter(
val selectFolder: String,
val clickAction: (folder: String) -> Unit
) : BaseQuickAdapter<String, BookmarkFolderAdapter.BookmarkFolderViewHolder>() {
inner class BookmarkFolderViewHolder(view: View) : ViewHolder(view)
override fun onBindViewHolder(holder: BookmarkFolderViewHolder, position: Int, item: String?) {
if (item == null) return
val binding = ItemBookmarkFolderBinding.bind(holder.itemView)
binding.tvName.text = item
binding.ivSelector.isSelected = item == selectFolder
binding.root.setOnClickListener {
clickAction.invoke(item)
}
}
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): BookmarkFolderViewHolder {
return BookmarkFolderViewHolder(R.layout.item_bookmark_folder.inflate(parent))
}
}
\ No newline at end of file
package com.base.browserwhite.ui.activity.bookmark
import android.graphics.Color
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.core.widget.addTextChangedListener
import com.base.browserwhite.databinding.ActivityBookmarkFolderAddBinding
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_FOLDER_SP_KEY
class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding>() {
override val binding: ActivityBookmarkFolderAddBinding by lazy {
ActivityBookmarkFolderAddBinding.inflate(layoutInflater)
}
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.WHITE)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
binding.editName.setText(editFolder)
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finish()
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
binding.editName.addTextChangedListener {
binding.tvSave.isEnabled = !it.isNullOrEmpty()
}
binding.tvSave.setOnClickListener {
SpBeanUtils.addSpBean(BOOKMARK_FOLDER_SP_KEY, binding.editName.text.toString())
finish()
}
}
companion object {
var editFolder: String = ""
}
}
\ No newline at end of file
...@@ -18,6 +18,7 @@ import com.base.browserwhite.bean.ConstObject.GOOGLE ...@@ -18,6 +18,7 @@ import com.base.browserwhite.bean.ConstObject.GOOGLE
import com.base.browserwhite.bean.ConstObject.searchEngineSp import com.base.browserwhite.bean.ConstObject.searchEngineSp
import com.base.browserwhite.databinding.ActivityWebBrowserBinding import com.base.browserwhite.databinding.ActivityWebBrowserBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.activity.bookmark.BookmarkActivity
import com.base.browserwhite.ui.activity.bookmark.BookmarkEditActivity import com.base.browserwhite.ui.activity.bookmark.BookmarkEditActivity
import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import com.base.browserwhite.ui.views.DialogViews.showWebBrowserMoreDialog import com.base.browserwhite.ui.views.DialogViews.showWebBrowserMoreDialog
...@@ -201,13 +202,17 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() { ...@@ -201,13 +202,17 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
} }
} }
binding.ivMore.setOnClickListener { binding.ivMore.setOnClickListener {
showWebBrowserMoreDialog(joinAction = { showWebBrowserMoreDialog(
bookmarkAction = {
startActivity(Intent(this, BookmarkActivity::class.java))
},
joinAction = {
// val url = currentFragment?.url ?: "" // val url = currentFragment?.url ?: ""
// val value = Gson().toJson(BookmarkBean(url = url, time = System.currentTimeMillis())) // val value = Gson().toJson(BookmarkBean(url = url, time = System.currentTimeMillis()))
// SpBeanUtils.addSpBean(BOOKMARK, value) // SpBeanUtils.addSpBean(BOOKMARK, value)
BookmarkEditActivity.editBookmark = currentFragment?.bookmarkBean BookmarkEditActivity.editBookmark = currentFragment?.bookmarkBean
startActivity(Intent(this, BookmarkEditActivity::class.java)) startActivity(Intent(this, BookmarkEditActivity::class.java))
}) })
} }
} }
......
...@@ -28,7 +28,7 @@ import com.base.browserwhite.databinding.FragmentHomeBinding ...@@ -28,7 +28,7 @@ import com.base.browserwhite.databinding.FragmentHomeBinding
import com.base.browserwhite.fcm.NotificationUtil import com.base.browserwhite.fcm.NotificationUtil
import com.base.browserwhite.help.NewsUtils.requestNews import com.base.browserwhite.help.NewsUtils.requestNews
import com.base.browserwhite.ui.activity.appprocess.AppProcessActivity import com.base.browserwhite.ui.activity.appprocess.AppProcessActivity
import com.base.browserwhite.ui.activity.bookmark.BookMarkActivity import com.base.browserwhite.ui.activity.bookmark.BookmarkActivity
import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity
import com.base.browserwhite.ui.activity.news.NewsActivity import com.base.browserwhite.ui.activity.news.NewsActivity
import com.base.browserwhite.ui.activity.news.NewsDetailActivity import com.base.browserwhite.ui.activity.news.NewsDetailActivity
...@@ -118,7 +118,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -118,7 +118,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
} }
BOOKMARK -> { BOOKMARK -> {
requireContext().startActivity(Intent(requireContext(), BookMarkActivity::class.java)) requireContext().startActivity(Intent(requireContext(), BookmarkActivity::class.java))
} }
} }
......
...@@ -325,7 +325,12 @@ object DialogViews { ...@@ -325,7 +325,12 @@ object DialogViews {
} }
fun Context.showWebBrowserMoreDialog(joinAction: (() -> Unit)? = null) { fun Context.showWebBrowserMoreDialog(
bookmarkAction: (() -> Unit)? = null,//打开书签
joinAction: (() -> Unit)? = null//加入书签
) {
val dialog = BottomSheetDialog(this) val dialog = BottomSheetDialog(this)
val binding = DialogMoreWebbrowserBinding.inflate(LayoutInflater.from(this)) val binding = DialogMoreWebbrowserBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root) dialog.setContentView(binding.root)
...@@ -341,10 +346,18 @@ object DialogViews { ...@@ -341,10 +346,18 @@ object DialogViews {
binding.tvCancel.setOnClickListener { binding.tvCancel.setOnClickListener {
dialog.dismiss() dialog.dismiss()
} }
arrayOf(binding.ivBookmark, binding.tvBookmark).forEach {
it.setOnClickListener {
bookmarkAction?.invoke()
}
}
binding.llJoinBookmark.setOnClickListener { arrayOf(binding.ivJoinBookmark, binding.tvJoinBookmark).forEach {
joinAction?.invoke() it.setOnClickListener {
joinAction?.invoke()
}
} }
} }
......
...@@ -3,22 +3,23 @@ package com.base.browserwhite.utils ...@@ -3,22 +3,23 @@ package com.base.browserwhite.utils
object SpBeanUtils { object SpBeanUtils {
const val BOOKMARK_SP_KEY = "bookmark_sp_key" const val BOOKMARK_SP_KEY = "bookmark_sp_key"//书签
const val SEARCH_RECORD_SP_KEY = "SEARCH_RECORD_SP_KEY" const val BOOKMARK_FOLDER_SP_KEY = "bookmark_folder_sp_key"//书签目录
const val SEARCH_RECORD_SP_KEY = "search_record_sp_key"
fun getSpBeanList(key: String): List<String> { fun getSpBeanList(key: String): List<String> {
val sp = AppPreferences.getInstance().getString(key, "") val sp = AppPreferences.getInstance().getString(key, "")
return if (sp.equals("")) { return if (sp.equals("")) {
listOf() listOf()
} else { } else {
sp.split(",") sp.split("|||")
} }
} }
fun deleteSpBean(key: String, value: String) { fun deleteSpBean(key: String, value: String) {
val list = getSpBeanList(key).toMutableList() val list = getSpBeanList(key).toMutableList()
list.remove(value) list.remove(value)
val string = list.joinToString(separator = ",") val string = list.joinToString(separator = "|||")
AppPreferences.getInstance().put(key, string) AppPreferences.getInstance().put(key, string)
} }
...@@ -26,7 +27,7 @@ object SpBeanUtils { ...@@ -26,7 +27,7 @@ object SpBeanUtils {
fun addSpBean(key: String, value: String) { fun addSpBean(key: String, value: String) {
val list = getSpBeanList(key).toMutableList() val list = getSpBeanList(key).toMutableList()
list.add(value) list.add(value)
val string = list.joinToString(separator = ",") val string = list.joinToString(separator = "|||")
AppPreferences.getInstance().put(key, string) AppPreferences.getInstance().put(key, string)
} }
......
package com.base.browserwhite.utils
import android.content.Context
import android.widget.Toast
object ToastUtils {
fun Context.toast(content: String) {
Toast.makeText(this, content, Toast.LENGTH_SHORT).show()
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/x_weixuan_nav" android:state_selected="false" /> <item android:color="#999999" android:state_enabled="false" />
<item android:drawable="@mipmap/x_xuanze_nav" android:state_selected="true" /> <item android:color="#ffffff" android:state_enabled="true" />
</selector> </selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#0571ED" />
<corners android:radius="25dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_ffffff_15" android:state_selected="true" />
<item android:drawable="@android:color/transparent" android:state_selected="false" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_f4f5f7_20" android:state_enabled="false" />
<item android:drawable="@drawable/bg_0571ed_20" android:state_enabled="true" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F4F5F7" />
<corners android:radius="20dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_ffffff_15" android:state_selected="true" /> <item android:drawable="@mipmap/x_weixuan_nav" android:state_selected="false" />
<item android:drawable="@android:color/transparent" android:state_selected="false" /> <item android:drawable="@mipmap/x_xuanze_nav" android:state_selected="true" />
</selector> </selector>
\ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
tools:context=".ui.activity.bookmark.BookMarkActivity"> tools:context=".ui.activity.bookmark.BookmarkActivity">
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:background="@drawable/bg_selector_bookmark" android:background="@drawable/bg_border_selector_bookmark"
android:gravity="center" android:gravity="center"
android:paddingHorizontal="12dp" android:paddingHorizontal="12dp"
android:paddingVertical="11dp" android:paddingVertical="11dp"
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:background="@drawable/bg_selector_bookmark" android:background="@drawable/bg_border_selector_bookmark"
android:gravity="center" android:gravity="center"
android:paddingHorizontal="12dp" android:paddingHorizontal="12dp"
android:paddingVertical="11dp" android:paddingVertical="11dp"
......
...@@ -52,11 +52,11 @@ ...@@ -52,11 +52,11 @@
android:layout_height="35dp" android:layout_height="35dp"
android:layout_gravity="center_vertical|end" android:layout_gravity="center_vertical|end"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:background="@drawable/bg_0571ed_25" android:background="@drawable/bg_border_selector_save"
android:enabled="false" android:enabled="false"
android:gravity="center" android:gravity="center"
android:text="Save" android:text="Save"
android:textColor="@color/white" android:textColor="@color/color_enable_999999_ffffff"
android:textSize="18sp" android:textSize="18sp"
tools:ignore="ContentDescription,HardcodedText" /> tools:ignore="ContentDescription,HardcodedText" />
...@@ -104,6 +104,7 @@ ...@@ -104,6 +104,7 @@
tools:text="https://google.com" /> tools:text="https://google.com" />
<LinearLayout <LinearLayout
android:id="@+id/ll_folder"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="56dp" android:layout_height="56dp"
android:layout_marginHorizontal="15dp" android:layout_marginHorizontal="15dp"
...@@ -126,11 +127,13 @@ ...@@ -126,11 +127,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_weight="1" android:layout_weight="1"
android:ellipsize="middle"
android:gravity="end" android:gravity="end"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:singleLine="true"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="16sp" android:textSize="16sp"
tools:text="Root Folder" /> tools:text="Root Directory" />
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -154,7 +157,7 @@ ...@@ -154,7 +157,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:src="@drawable/bg_add_nav_selector" android:src="@drawable/bg_selector_bookmark"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.activity.bookmark.BookmarkFolderActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginVertical="10dp"
android:layout_marginStart="10dp">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/h_fanhui"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Select Folder"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<ImageView
android:id="@+id/iv_new_folder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="18dp"
android:enabled="false"
android:gravity="center"
android:src="@mipmap/tianjia_bookmark"
android:text="Save"
android:textColor="@color/white"
android:textSize="18sp"
tools:ignore="ContentDescription,HardcodedText" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="16dp"
android:text="Root Directory"
android:textColor="@color/black"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_gravity="bottom"
android:background="#E5E6EB" />
<ImageView
android:id="@+id/iv_root_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="18dp"
android:src="@drawable/bg_selector_bookmark"
tools:ignore="ContentDescription" />
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_bookmark_folder" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.activity.bookmark.BookmarkFolderAddActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginVertical="10dp"
android:layout_marginStart="10dp">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/h_fanhui"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="New Folder"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:id="@+id/tv_save"
android:layout_width="93dp"
android:layout_height="43dp"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_border_selector_save"
android:enabled="false"
android:gravity="center"
android:text="Save"
android:textColor="@color/color_enable_999999_ffffff"
android:textSize="18sp"
tools:ignore="ContentDescription,HardcodedText" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="22dp"
android:text="Name"
android:textColor="@color/black"
android:textSize="15sp"
tools:ignore="HardcodedText" />
<EditText
android:id="@+id/edit_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="20dp"
android:textSize="17sp"
tools:ignore="Autofill,LabelFor,TextFields" />
<LinearLayout
android:id="@+id/ll_folder"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="36dp"
android:background="@drawable/bg_edf1f4_15">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="15dp"
android:text="Name"
android:textColor="@color/black"
android:textSize="14sp"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_folder"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:gravity="end"
android:paddingHorizontal="8dp"
android:textColor="#A7A7AB"
android:textSize="16sp"
tools:text="Root Directory" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
...@@ -22,51 +22,52 @@ ...@@ -22,51 +22,52 @@
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/ll_bookmark" android:id="@+id/iv_bookmark"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:src="@mipmap/bookmark_browser" android:src="@mipmap/bookmark_browser"
app:layout_constraintEnd_toStartOf="@id/ll_history" app:layout_constraintEnd_toStartOf="@id/iv_history"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/ll_history" android:id="@+id/iv_history"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:src="@mipmap/history_browser" android:src="@mipmap/history_browser"
app:layout_constraintEnd_toStartOf="@id/ll_refresh" app:layout_constraintEnd_toStartOf="@id/iv_refresh"
app:layout_constraintStart_toEndOf="@id/ll_bookmark" app:layout_constraintStart_toEndOf="@id/iv_bookmark"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/ll_refresh" android:id="@+id/iv_refresh"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:src="@mipmap/refresh_browser" android:src="@mipmap/refresh_browser"
app:layout_constraintEnd_toStartOf="@id/ll_join_bookmark" app:layout_constraintEnd_toStartOf="@id/iv_join_bookmark"
app:layout_constraintStart_toEndOf="@id/ll_history" app:layout_constraintStart_toEndOf="@id/iv_history"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/ll_join_bookmark" android:id="@+id/iv_join_bookmark"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:src="@mipmap/join_browser" android:src="@mipmap/join_browser"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ll_refresh" app:layout_constraintStart_toEndOf="@id/iv_refresh"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
android:id="@+id/tv_bookmark"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
...@@ -74,13 +75,13 @@ ...@@ -74,13 +75,13 @@
android:text="Bookmark" android:text="Bookmark"
android:textColor="#263847" android:textColor="#263847"
android:textSize="13sp" android:textSize="13sp"
app:layout_constraintEnd_toEndOf="@id/ll_bookmark" app:layout_constraintEnd_toEndOf="@id/iv_bookmark"
app:layout_constraintStart_toStartOf="@id/ll_bookmark" app:layout_constraintStart_toStartOf="@id/iv_bookmark"
app:layout_constraintTop_toBottomOf="@id/ll_bookmark" app:layout_constraintTop_toBottomOf="@id/iv_bookmark"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tv_history"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
...@@ -88,12 +89,13 @@ ...@@ -88,12 +89,13 @@
android:text="History" android:text="History"
android:textColor="#263847" android:textColor="#263847"
android:textSize="13sp" android:textSize="13sp"
app:layout_constraintEnd_toEndOf="@id/ll_history" app:layout_constraintEnd_toEndOf="@id/iv_history"
app:layout_constraintStart_toStartOf="@id/ll_history" app:layout_constraintStart_toStartOf="@id/iv_history"
app:layout_constraintTop_toBottomOf="@id/ll_history" app:layout_constraintTop_toBottomOf="@id/iv_history"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tv_refresh"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
...@@ -101,13 +103,14 @@ ...@@ -101,13 +103,14 @@
android:text="Refresh" android:text="Refresh"
android:textColor="#263847" android:textColor="#263847"
android:textSize="13sp" android:textSize="13sp"
app:layout_constraintEnd_toEndOf="@id/ll_refresh" app:layout_constraintEnd_toEndOf="@id/iv_refresh"
app:layout_constraintStart_toStartOf="@id/ll_refresh" app:layout_constraintStart_toStartOf="@id/iv_refresh"
app:layout_constraintTop_toBottomOf="@id/ll_refresh" app:layout_constraintTop_toBottomOf="@id/iv_refresh"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tv_join_bookmark"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
...@@ -115,9 +118,9 @@ ...@@ -115,9 +118,9 @@
android:text="Join Bookmark" android:text="Join Bookmark"
android:textColor="#263847" android:textColor="#263847"
android:textSize="13sp" android:textSize="13sp"
app:layout_constraintEnd_toEndOf="@id/ll_join_bookmark" app:layout_constraintEnd_toEndOf="@id/iv_join_bookmark"
app:layout_constraintStart_toStartOf="@id/ll_join_bookmark" app:layout_constraintStart_toStartOf="@id/iv_join_bookmark"
app:layout_constraintTop_toBottomOf="@id/ll_join_bookmark" app:layout_constraintTop_toBottomOf="@id/iv_join_bookmark"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
......
...@@ -7,35 +7,6 @@ ...@@ -7,35 +7,6 @@
android:background="@color/white" android:background="@color/white"
android:orientation="horizontal"> android:orientation="horizontal">
<FrameLayout
android:id="@+id/fl_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/card"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginVertical="10dp"
android:layout_marginStart="15dp"
android:text="Today"
android:textColor="@color/black"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_gravity="bottom"
android:background="#E5E6EB" />
</FrameLayout>
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/card" android:id="@+id/card"
android:layout_width="40dp" android:layout_width="40dp"
...@@ -43,9 +14,9 @@ ...@@ -43,9 +14,9 @@
android:layout_marginVertical="4dp" android:layout_marginVertical="4dp"
android:layout_marginStart="15dp" android:layout_marginStart="15dp"
app:cardElevation="0dp" app:cardElevation="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent">
app:layout_constraintTop_toBottomOf="@id/fl_time">
<ImageView <ImageView
android:id="@+id/iv" android:id="@+id/iv"
...@@ -54,14 +25,16 @@ ...@@ -54,14 +25,16 @@
android:src="@mipmap/wenjiajia_bookmark" android:src="@mipmap/wenjiajia_bookmark"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <TextView
android:id="@+id/iv_shipin" android:id="@+id/tv_letters"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@mipmap/h_shipin" android:gravity="center"
android:visibility="gone" android:text="G"
tools:ignore="ContentDescription" /> android:textColor="@color/white"
android:textSize="16sp"
tools:ignore="ContentDescription,HardcodedText" />
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
...@@ -109,9 +82,10 @@ ...@@ -109,9 +82,10 @@
</FrameLayout> </FrameLayout>
<View <View
android:layout_marginBottom="2dp"
android:layout_marginTop="20dp"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="1px" android:layout_height="1px"
android:layout_marginTop="15dp"
android:background="#E5E6EB" android:background="#E5E6EB"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
<?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:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginVertical="10dp"
android:layout_marginStart="15dp"
android:src="@mipmap/wenjiajia_bookmark"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="16dp"
android:layout_weight="1"
android:textColor="@color/black"
android:textSize="18sp"
tools:text="My Favorite" />
<ImageView
android:id="@+id/iv_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="18dp"
android:src="@drawable/bg_selector_bookmark"
tools:ignore="ContentDescription" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="horizontal">
<FrameLayout
android:id="@+id/fl_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/card"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginVertical="10dp"
android:layout_marginStart="15dp"
android:text="Today"
android:textColor="@color/black"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_gravity="bottom"
android:background="#E5E6EB" />
</FrameLayout>
<androidx.cardview.widget.CardView
android:id="@+id/card"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginVertical="4dp"
android:layout_marginStart="15dp"
app:cardElevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl_time">
<TextView
android:id="@+id/tv_letters"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:text="G"
android:textColor="@color/white"
android:textSize="16sp"
tools:ignore="ContentDescription,HardcodedText" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:id="@+id/ll"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="5dp"
android:layout_marginStart="16dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/card"
app:layout_constraintEnd_toStartOf="@id/fl_more"
app:layout_constraintStart_toEndOf="@id/card"
app:layout_constraintTop_toTopOf="@id/card">
<TextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:text="My Favorite"
android:textColor="#010101"
android:textSize="18sp"
tools:ignore="HardcodedText" />
</LinearLayout>
<FrameLayout
android:id="@+id/fl_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="8dp"
android:background="?android:attr/selectableItemBackground"
android:padding="8dp"
app:layout_constraintBottom_toBottomOf="@id/card"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/card">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/geduo"
tools:ignore="ContentDescription" />
</FrameLayout>
<View
android:layout_width="0dp"
android:layout_height="1px"
android:layout_marginTop="15dp"
android:background="#E5E6EB"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/ll"
app:layout_constraintTop_toBottomOf="@id/ll" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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