Commit dc98af32 authored by wanglei's avatar wanglei

...

parent 1a083b74
package com.base.browserwhite.bean package com.base.browserwhite.bean
data class DownloadBean( data class DownloadBean(
val downloadId: Long=0, val downloadId: Long = 0,
val path: String="", val path: String = "",
val time: String = "" val uri: String = "",
val time: String = "",
) { ) {
var isTime: Boolean = false var isTime: Boolean = false
var uiType: Int = 1
} }
\ No newline at end of file
...@@ -6,23 +6,36 @@ import android.os.Build ...@@ -6,23 +6,36 @@ import android.os.Build
import android.os.Environment import android.os.Environment
import android.os.StatFs import android.os.StatFs
import android.os.storage.StorageManager import android.os.storage.StorageManager
import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isEmpty import androidx.core.view.isEmpty
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
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.base.browserwhite.BuildConfig
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.bean.MediaBean
import com.base.browserwhite.databinding.ActivityMainBinding import com.base.browserwhite.databinding.ActivityMainBinding
import com.base.browserwhite.ui.fragment.FileFragment import com.base.browserwhite.ui.fragment.FileFragment
import com.base.browserwhite.ui.fragment.HomeFragment import com.base.browserwhite.ui.fragment.HomeFragment
import com.base.browserwhite.ui.views.DialogViews.showMyAccountDialog import com.base.browserwhite.ui.views.DialogViews.showMyAccountDialog
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.MediaStoreUtils.getMediaFile
import com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import com.base.browserwhite.utils.VideoDownloader import com.base.browserwhite.utils.VideoDownloader
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch
import java.io.File import java.io.File
class MainActivity : BaseActivity<ActivityMainBinding>() { class MainActivity : BaseActivity<ActivityMainBinding>() {
private val TAG = "MainActivity"
private val homeFragment: HomeFragment by lazy { private val homeFragment: HomeFragment by lazy {
HomeFragment() HomeFragment()
} }
......
...@@ -173,7 +173,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -173,7 +173,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
val delayTime = 300L val delayTime = 300L
delay(delayTime) delay(delayTime)
processTime += delayTime processTime += delayTime
if (processTime >= Random.nextLong(5000, 8000)) { if (processTime >= 600L) {
if (!outTimeAdStart) { if (!outTimeAdStart) {
outTimeAdStart = true outTimeAdStart = true
outTimeAd() outTimeAd()
......
...@@ -16,8 +16,10 @@ import android.webkit.WebStorage ...@@ -16,8 +16,10 @@ import android.webkit.WebStorage
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.bean.DownloadBean
import com.base.browserwhite.databinding.FragmentWebViewBinding import com.base.browserwhite.databinding.FragmentWebViewBinding
import com.base.browserwhite.ui.fragment.BaseFragment import com.base.browserwhite.ui.fragment.BaseFragment
import com.base.browserwhite.ui.views.DialogViews.showDownloadVideoDialog
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
...@@ -31,6 +33,7 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -31,6 +33,7 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
private val TAG = "WebViewFragment" private val TAG = "WebViewFragment"
private var job: Job? = null private var job: Job? = null
var url: String = "" var url: String = ""
private val downloadList = arrayListOf<DownloadBean>()
override val binding: FragmentWebViewBinding by lazy { override val binding: FragmentWebViewBinding by lazy {
FragmentWebViewBinding.inflate(layoutInflater) FragmentWebViewBinding.inflate(layoutInflater)
...@@ -64,6 +67,9 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -64,6 +67,9 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
} }
reloadWebView() reloadWebView()
} }
binding.flDownload.setOnClickListener {
requireContext().showDownloadVideoDialog(downloadList)
}
} }
private fun reloadWebView() { private fun reloadWebView() {
...@@ -219,11 +225,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -219,11 +225,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
} }
var isParsing: Boolean = false private var isParsing: Boolean = false
fun parseVideoLink(view: WebView) { fun parseVideoLink(view: WebView) {
if (isParsing) return if (isParsing) return
isParsing = true isParsing = true
downloadList.clear()
view.evaluateJavascript("(function() {" + view.evaluateJavascript("(function() {" +
"var videos = document.querySelectorAll('video');" + "var videos = document.querySelectorAll('video');" +
"var videoSources = [];" + "var videoSources = [];" +
...@@ -241,9 +247,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -241,9 +247,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
binding.flDownload.visibility = View.VISIBLE binding.flDownload.visibility = View.VISIBLE
binding.tvDownloadNumber.text = jsonArray.length().toString() binding.tvDownloadNumber.text = jsonArray.length().toString()
} }
for (i in 0 until jsonArray.length()) { for (i in 0 until jsonArray.length()) {
val videoUrl = jsonArray.optString(i) val videoUrl = jsonArray.optString(i)
LogEx.logDebug(TAG, videoUrl) LogEx.logDebug(TAG, videoUrl)
downloadList.add(DownloadBean(uri = videoUrl).apply { uiType = 2 })
} }
isParsing = false isParsing = false
}) })
......
package com.base.browserwhite.ui.adapter package com.base.browserwhite.ui.adapter
import android.content.ClipData.Item
import android.content.Context import android.content.Context
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -8,9 +7,9 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder ...@@ -8,9 +7,9 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.bean.DownloadBean import com.base.browserwhite.bean.DownloadBean
import com.base.browserwhite.databinding.ItemDownloadBinding import com.base.browserwhite.databinding.ItemDownloadBinding
import com.base.browserwhite.databinding.ItemDownloadCardBinding
import com.base.browserwhite.databinding.ItemDownloadTimeBinding import com.base.browserwhite.databinding.ItemDownloadTimeBinding
import com.base.browserwhite.utils.KotlinExt.toFormatSize import com.base.browserwhite.utils.KotlinExt.toFormatSize
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.XmlEx.inflate import com.base.browserwhite.utils.XmlEx.inflate
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
...@@ -26,23 +25,32 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV ...@@ -26,23 +25,32 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
if (item.isTime) { if (item.isTime) {
val binding = ItemDownloadTimeBinding.bind(holder.itemView) val binding = ItemDownloadTimeBinding.bind(holder.itemView)
binding.tvTime.text = item.time binding.tvTime.text = item.time
} else { } else if (item.uiType == 1) {
val binding = ItemDownloadBinding.bind(holder.itemView) val binding = ItemDownloadBinding.bind(holder.itemView)
val file = File(item.path) val file = File(item.path)
Glide.with(context).load(file.absoluteFile).centerCrop().into(binding.iv) Glide.with(context).load(file.absoluteFile).centerCrop().into(binding.iv)
binding.tvName.text = file.name binding.tvName.text = file.name
binding.tvSize.text = file.length().toFormatSize() binding.tvSize.text = file.length().toFormatSize()
} else if (item.uiType == 2) {
val binding = ItemDownloadCardBinding.bind(holder.itemView)
Glide.with(context).load(item.uri).centerCrop().into(binding.iv)
binding.tvName.text = item.uri.split("/").last()
} }
} }
override fun getItemViewType(position: Int, list: List<DownloadBean>): Int { override fun getItemViewType(position: Int, list: List<DownloadBean>): Int {
val bean = list[position] val bean = list[position]
return if (bean.isTime) 0 else 1 return if (bean.isTime) 0 else bean.uiType
} }
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): DownloadViewHolder { override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): DownloadViewHolder {
val layout = if (viewType == 0) R.layout.item_download_time else R.layout.item_download val layout = when (viewType) {
0 -> R.layout.item_download_time
1 -> R.layout.item_download
2 -> R.layout.item_download_card
else -> 0
}
return DownloadViewHolder(layout.inflate(parent)) return DownloadViewHolder(layout.inflate(parent))
} }
......
...@@ -28,8 +28,7 @@ class MediaAdapter( ...@@ -28,8 +28,7 @@ class MediaAdapter(
val uiType: Int, val uiType: Int,
val clickAction: ((bean: MediaBean) -> Unit)? = null, val clickAction: ((bean: MediaBean) -> Unit)? = null,
val moreAction: ((view: View, bean: MediaBean) -> Unit)? = null val moreAction: ((view: View, bean: MediaBean) -> Unit)? = null
) : ) : RecyclerView.Adapter<MediaAdapter.MediaViewHolder>() {
RecyclerView.Adapter<MediaAdapter.MediaViewHolder>() {
private val beanList = arrayListOf<MediaBean>() private val beanList = arrayListOf<MediaBean>()
......
...@@ -4,6 +4,7 @@ import android.annotation.SuppressLint ...@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.view.View import android.view.View
import android.widget.Toast
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.BuildConfig import com.base.browserwhite.BuildConfig
import com.base.browserwhite.bean.MediaBean import com.base.browserwhite.bean.MediaBean
...@@ -21,17 +22,19 @@ import com.base.browserwhite.ui.views.DialogViews.showMediaMoreDialog ...@@ -21,17 +22,19 @@ import com.base.browserwhite.ui.views.DialogViews.showMediaMoreDialog
import com.base.browserwhite.ui.views.ProgressBean import com.base.browserwhite.ui.views.ProgressBean
import com.base.browserwhite.utils.IntentEx.shareAction import com.base.browserwhite.utils.IntentEx.shareAction
import com.base.browserwhite.utils.KotlinExt.toFormatSize import com.base.browserwhite.utils.KotlinExt.toFormatSize
import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.MediaStoreUtils.getMediaApkCountSize import com.base.browserwhite.utils.MediaStoreUtils.getMediaApkCountSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaAudioCountSize import com.base.browserwhite.utils.MediaStoreUtils.getMediaAudioCountSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaDocumentCountSize import com.base.browserwhite.utils.MediaStoreUtils.getMediaDocumentCountSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaFile
import com.base.browserwhite.utils.MediaStoreUtils.getMediaPhotoCountSize import com.base.browserwhite.utils.MediaStoreUtils.getMediaPhotoCountSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaVideoCountSize import com.base.browserwhite.utils.MediaStoreUtils.getMediaVideoCountSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaZipCountSize import com.base.browserwhite.utils.MediaStoreUtils.getMediaZipCountSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaFile
import com.base.browserwhite.utils.PermissionHelp.checkStorePermission import com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import com.base.browserwhite.utils.PermissionHelp.requestStorePermission import com.base.browserwhite.utils.PermissionHelp.requestStorePermission
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.io.File import java.io.File
...@@ -62,10 +65,6 @@ class FileFragment : BaseFragment<FragmentFileBinding>() { ...@@ -62,10 +65,6 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
moreAction(requireContext(), view, bean, adapter) moreAction(requireContext(), view, bean, adapter)
}) })
binding.rvRecent.adapter = adapter binding.rvRecent.adapter = adapter
if (requireContext().checkStorePermission()) {
initRvData()
}
} }
companion object { companion object {
...@@ -91,7 +90,6 @@ class FileFragment : BaseFragment<FragmentFileBinding>() { ...@@ -91,7 +90,6 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
val launcher = (requireActivity() as MainActivity).launcher val launcher = (requireActivity() as MainActivity).launcher
requireContext().requestStorePermission(launcher) { requireContext().requestStorePermission(launcher) {
if (it) { if (it) {
initRvData()
} }
} }
} }
...@@ -190,7 +188,6 @@ class FileFragment : BaseFragment<FragmentFileBinding>() { ...@@ -190,7 +188,6 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
// ) // )
progressList progressList
) )
binding.tvPhotoSize.text = picturePair.first.toString() binding.tvPhotoSize.text = picturePair.first.toString()
binding.tvVideoSize.text = videoPair.first.toString() binding.tvVideoSize.text = videoPair.first.toString()
binding.tvAudioSize.text = audioPair.first.toString() binding.tvAudioSize.text = audioPair.first.toString()
...@@ -199,11 +196,8 @@ class FileFragment : BaseFragment<FragmentFileBinding>() { ...@@ -199,11 +196,8 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
binding.tvZipSize.text = zipSize.toString() binding.tvZipSize.text = zipSize.toString()
} }
binding.colorProgress.finishAnimation = {
} val list = requireContext().getMediaFile().filter {
private fun initRvData() = lifecycleScope.launch(Dispatchers.IO) {
val mediaList = requireContext().getMediaFile().filter {
val file = File(it.path) val file = File(it.path)
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
true true
...@@ -211,13 +205,12 @@ class FileFragment : BaseFragment<FragmentFileBinding>() { ...@@ -211,13 +205,12 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
System.currentTimeMillis() - file.lastModified() <= 15L * 24 * 60 * 60 * 1000 System.currentTimeMillis() - file.lastModified() <= 15L * 24 * 60 * 60 * 1000
} }
} }
LogEx.logDebug(TAG, "size=${mediaList.size}") if (list.isEmpty()) {
launch(Dispatchers.Main) {
if (mediaList.isEmpty()) {
binding.tvTitleRecent.visibility = View.GONE binding.tvTitleRecent.visibility = View.GONE
} }
adapter.setData(mediaList) adapter.setData(list)
} }
} }
......
package com.base.browserwhite.ui.views package com.base.browserwhite.ui.views
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.AnimatorSet import android.animation.AnimatorSet
import android.animation.ValueAnimator import android.animation.ValueAnimator
import android.content.Context import android.content.Context
...@@ -41,6 +43,8 @@ class ColorProgress : View { ...@@ -41,6 +43,8 @@ class ColorProgress : View {
initPaint(context) initPaint(context)
} }
var finishAnimation: (() -> Unit)? = null
private fun initPaint(context: Context) { private fun initPaint(context: Context) {
strokeWidth = context.resources.getDimension(R.dimen.dp_9) strokeWidth = context.resources.getDimension(R.dimen.dp_9)
...@@ -111,7 +115,7 @@ class ColorProgress : View { ...@@ -111,7 +115,7 @@ class ColorProgress : View {
invalidate() invalidate()
} }
fun animateProgress( list: List<ProgressBean>) { fun animateProgress(list: List<ProgressBean>) {
listProgressBean = list listProgressBean = list
val totalAngle = list.maxOf { it.sweepAngle } val totalAngle = list.maxOf { it.sweepAngle }
val progressAnimator = ValueAnimator.ofFloat(0f, totalAngle) val progressAnimator = ValueAnimator.ofFloat(0f, totalAngle)
...@@ -121,6 +125,20 @@ class ColorProgress : View { ...@@ -121,6 +125,20 @@ class ColorProgress : View {
val animatedValue = animation.getAnimatedValue() as Float val animatedValue = animation.getAnimatedValue() as Float
setProgress(animatedValue) setProgress(animatedValue)
} }
progressAnimator.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator) {
}
override fun onAnimationEnd(animation: Animator) {
finishAnimation?.invoke()
}
override fun onAnimationCancel(animation: Animator) {
}
override fun onAnimationRepeat(animation: Animator) {
}
})
progressAnimator.start() progressAnimator.start()
} }
......
...@@ -17,11 +17,14 @@ import com.base.browserwhite.bean.ConstObject.DUCKDUCKGO ...@@ -17,11 +17,14 @@ import com.base.browserwhite.bean.ConstObject.DUCKDUCKGO
import com.base.browserwhite.bean.ConstObject.GOOGLE import com.base.browserwhite.bean.ConstObject.GOOGLE
import com.base.browserwhite.bean.ConstObject.YAHOO import com.base.browserwhite.bean.ConstObject.YAHOO
import com.base.browserwhite.bean.ConstObject.YANDEX import com.base.browserwhite.bean.ConstObject.YANDEX
import com.base.browserwhite.bean.DownloadBean
import com.base.browserwhite.databinding.DialogDeleteTipBinding import com.base.browserwhite.databinding.DialogDeleteTipBinding
import com.base.browserwhite.databinding.DialogDownloadVideoBinding
import com.base.browserwhite.databinding.DialogMediaMoreBinding import com.base.browserwhite.databinding.DialogMediaMoreBinding
import com.base.browserwhite.databinding.DialogMyAccountBinding import com.base.browserwhite.databinding.DialogMyAccountBinding
import com.base.browserwhite.databinding.DialogPermissonOpenBinding import com.base.browserwhite.databinding.DialogPermissonOpenBinding
import com.base.browserwhite.databinding.DialogSearchEngineBinding import com.base.browserwhite.databinding.DialogSearchEngineBinding
import com.base.browserwhite.ui.adapter.DownloadAdapter
import com.base.browserwhite.ui.views.DialogViews.showMyAccountDialog import com.base.browserwhite.ui.views.DialogViews.showMyAccountDialog
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
...@@ -205,7 +208,7 @@ object DialogViews { ...@@ -205,7 +208,7 @@ object DialogViews {
dialog.show() dialog.show()
val params = dialog.window?.attributes val params = dialog.window?.attributes
params?.width=resources.getDimensionPixelOffset(R.dimen.dp_335) params?.width = resources.getDimensionPixelOffset(R.dimen.dp_335)
dialog.window?.attributes = params dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
binding.tvCancel.setOnClickListener { binding.tvCancel.setOnClickListener {
...@@ -217,9 +220,9 @@ object DialogViews { ...@@ -217,9 +220,9 @@ object DialogViews {
} }
} }
fun Context.showDownloadVideoDialog(){ fun Context.showDownloadVideoDialog(list: List<DownloadBean>) {
val dialog = BottomSheetDialog(this) val dialog = BottomSheetDialog(this)
val binding = DialogMyAccountBinding.inflate(LayoutInflater.from(this)) val binding = DialogDownloadVideoBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root) dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(false) dialog.setCanceledOnTouchOutside(false)
...@@ -229,6 +232,10 @@ object DialogViews { ...@@ -229,6 +232,10 @@ object DialogViews {
val behavior = BottomSheetBehavior.from(parentView) val behavior = BottomSheetBehavior.from(parentView)
//展开 //展开
behavior.state = BottomSheetBehavior.STATE_EXPANDED behavior.state = BottomSheetBehavior.STATE_EXPANDED
val adapter = DownloadAdapter()
binding.rv.adapter = adapter
adapter.submitList(list)
} }
} }
\ No newline at end of file
...@@ -44,13 +44,13 @@ ...@@ -44,13 +44,13 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv" android:id="@+id/rv"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="300dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
tools:listitem="@layout/item_download_card"
android:maxHeight="300dp" android:maxHeight="300dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_download_dir" /> app:layout_constraintTop_toBottomOf="@id/tv_download_dir"
tools:listitem="@layout/item_download_card" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<ImageView <ImageView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:src="@mipmap/xiazhai" android:src="@mipmap/xiazhai_web"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/tv_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/black" android:textColor="@color/black"
...@@ -53,6 +54,7 @@ ...@@ -53,6 +54,7 @@
tools:text="1796-21.mp4" /> tools:text="1796-21.mp4" />
<TextView <TextView
android:id="@+id/tv_size"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
......
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