Commit 4dcfc53e authored by wanglei's avatar wanglei

feat:白包版本

parent 7887d484
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
</deviceKey> </deviceKey>
</Target> </Target>
</runningDeviceTargetSelectedWithDropDown> </runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2024-03-18T05:10:08.056979Z" /> <timeTargetWasSelectedWithDropDown value="2024-03-18T09:51:39.340552400Z" />
</State> </State>
</entry> </entry>
</value> </value>
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/dikaisd_8897920"
android:label="@string/app_name" android:label="@string/app_name"
android:requestLegacyExternalStorage="true" android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
...@@ -31,44 +31,55 @@ ...@@ -31,44 +31,55 @@
<activity <activity
android:name="com.zxhy.hfilemanagermaster.image.ImageShowActivity" android:name="com.zxhy.hfilemanagermaster.image.ImageShowActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTop" /> android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.filebrowse.FileBrowseActivity" android:name="com.zxhy.hfilemanagermaster.filebrowse.FileBrowseActivity"
android:exported="false" /> android:exported="false"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.internalstorage.InternalStorageActivity" android:name="com.zxhy.hfilemanagermaster.internalstorage.InternalStorageActivity"
android:exported="false" /> android:exported="false"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.video.VideoActivity" android:name="com.zxhy.hfilemanagermaster.video.VideoActivity"
android:exported="false" /> android:exported="false"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.image.ImageActivity" android:name="com.zxhy.hfilemanagermaster.image.ImageActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTop" /> android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.duplicate.DupPictureActivity" android:name="com.zxhy.hfilemanagermaster.duplicate.DupPictureActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTop" /> android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.emptyfile.EmptyFileActivity" android:name="com.zxhy.hfilemanagermaster.emptyfile.EmptyFileActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTop" /> android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.largefile.LargeFileActivity" android:name="com.zxhy.hfilemanagermaster.largefile.LargeFileActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTop" /> android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.ToolsActivity" android:name="com.zxhy.hfilemanagermaster.ToolsActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTop" /> android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.OverviewActivity" android:name="com.zxhy.hfilemanagermaster.OverviewActivity"
android:exported="true" android:exported="true"
android:launchMode="singleTop" /> android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zxhy.hfilemanagermaster.HLaunchActivity" android:name="com.zxhy.hfilemanagermaster.HLaunchActivity"
android:exported="true"> android:exported="true"
android:screenOrientation="portrait">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
......
...@@ -26,10 +26,8 @@ class OverviewActivity : AppCompatActivity() { ...@@ -26,10 +26,8 @@ class OverviewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
enableEdgeToEdge() enableEdgeToEdge()
permissionLauncher = PermissionLauncher(this) permissionLauncher = PermissionLauncher(this)
intentLauncher = IntentLauncher(this) intentLauncher = IntentLauncher(this)
binding = ActivityOverviewBinding.inflate(layoutInflater) binding = ActivityOverviewBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
...@@ -41,8 +39,6 @@ class OverviewActivity : AppCompatActivity() { ...@@ -41,8 +39,6 @@ class OverviewActivity : AppCompatActivity() {
window.statusBarColor = ContextCompat.getColor(this, R.color.color_B7FF03) window.statusBarColor = ContextCompat.getColor(this, R.color.color_B7FF03)
binding.ivManager.isSelected = true binding.ivManager.isSelected = true
binding.flManager.setOnClickListener { binding.flManager.setOnClickListener {
binding.fragmentContainerView.findNavController().navigate(R.id.managerFragment) binding.fragmentContainerView.findNavController().navigate(R.id.managerFragment)
showManager() showManager()
......
...@@ -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.text.format.Formatter import android.text.format.Formatter
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.example.hfilemanagermaster.R import com.example.hfilemanagermaster.R
import com.example.hfilemanagermaster.databinding.DialogFileDetailsBinding import com.example.hfilemanagermaster.databinding.DialogFileDetailsBinding
...@@ -59,7 +60,8 @@ fun Context.showFileDetailsDialog( ...@@ -59,7 +60,8 @@ fun Context.showFileDetailsDialog(
//修改dialog的尺寸 //修改dialog的尺寸
val lp = dialog.window?.attributes val lp = dialog.window?.attributes
lp?.width = this.resources.getDimensionPixelOffset(R.dimen.dp_255) lp?.width = this.resources.getDimensionPixelOffset(R.dimen.dp_255)
lp?.height = this.resources.getDimensionPixelOffset(R.dimen.dp_233) // lp?.height = this.resources.getDimensionPixelOffset(R.dimen.dp_233)
lp?.height= ViewGroup.LayoutParams.WRAP_CONTENT
dialog.window?.attributes = lp dialog.window?.attributes = lp
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
dialog.window?.setDimAmount(0f) dialog.window?.setDimAmount(0f)
......
...@@ -32,7 +32,6 @@ import java.io.File ...@@ -32,7 +32,6 @@ import java.io.File
class DupPictureActivity : AppCompatActivity() { class DupPictureActivity : AppCompatActivity() {
private lateinit var binding: ActivityDupPictureBinding private lateinit var binding: ActivityDupPictureBinding
private lateinit var adapter: DupImageAdapter private lateinit var adapter: DupImageAdapter
private lateinit var dialog: Dialog
private lateinit var intentLauncher: IntentLauncher private lateinit var intentLauncher: IntentLauncher
private lateinit var permissionLauncher: PermissionLauncher private lateinit var permissionLauncher: PermissionLauncher
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
...@@ -112,7 +111,6 @@ class DupPictureActivity : AppCompatActivity() { ...@@ -112,7 +111,6 @@ class DupPictureActivity : AppCompatActivity() {
binding.tvAll.visibility = View.VISIBLE binding.tvAll.visibility = View.VISIBLE
binding.tvDelete.visibility = View.VISIBLE binding.tvDelete.visibility = View.VISIBLE
dialog = showLoadingDialog()
loadData() loadData()
} }
...@@ -134,13 +132,13 @@ class DupPictureActivity : AppCompatActivity() { ...@@ -134,13 +132,13 @@ class DupPictureActivity : AppCompatActivity() {
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
runOnUiThread { runOnUiThread {
toast("delete failed") loadData()
} }
} }
}.start() }.start()
private fun loadData() { private fun loadData() {
dialog.show() val dialog = showLoadingDialog()
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
val list = dupImageStore() val list = dupImageStore()
val dupDataList = arrayListOf<DupImageData>() val dupDataList = arrayListOf<DupImageData>()
......
...@@ -37,7 +37,6 @@ class EmptyFileActivity : AppCompatActivity() { ...@@ -37,7 +37,6 @@ class EmptyFileActivity : AppCompatActivity() {
private lateinit var intentLauncher: IntentLauncher private lateinit var intentLauncher: IntentLauncher
private lateinit var permissionLauncher: PermissionLauncher private lateinit var permissionLauncher: PermissionLauncher
private lateinit var emptyFileAdapter: EmptyFileAdapter private lateinit var emptyFileAdapter: EmptyFileAdapter
private lateinit var loadDialog: Dialog
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
enableEdgeToEdge() enableEdgeToEdge()
...@@ -63,7 +62,7 @@ class EmptyFileActivity : AppCompatActivity() { ...@@ -63,7 +62,7 @@ class EmptyFileActivity : AppCompatActivity() {
} }
private fun loadEmptyFile() { private fun loadEmptyFile() {
loadDialog.show() val loadDialog = showLoadingDialog()
emptyFile( emptyFile(
this, this,
onDoAction = { list -> onDoAction = { list ->
...@@ -123,7 +122,6 @@ class EmptyFileActivity : AppCompatActivity() { ...@@ -123,7 +122,6 @@ class EmptyFileActivity : AppCompatActivity() {
} }
} }
loadDialog = showLoadingDialog()
loadEmptyFile() loadEmptyFile()
} }
...@@ -144,7 +142,8 @@ class EmptyFileActivity : AppCompatActivity() { ...@@ -144,7 +142,8 @@ class EmptyFileActivity : AppCompatActivity() {
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
runOnUiThread { runOnUiThread {
toast("delete failed") loadEmptyFile()
// toast("delete failed")
} }
} }
}.start() }.start()
......
...@@ -39,7 +39,6 @@ class FileBrowseActivity : AppCompatActivity() { ...@@ -39,7 +39,6 @@ class FileBrowseActivity : AppCompatActivity() {
private lateinit var binding: ActivityFileBrowseBinding private lateinit var binding: ActivityFileBrowseBinding
private var tittle = "" private var tittle = ""
private lateinit var fileSelectAdapter: FileSelectorAdapter private lateinit var fileSelectAdapter: FileSelectorAdapter
private lateinit var loadDialog: Dialog
private lateinit var intentLauncher: IntentLauncher private lateinit var intentLauncher: IntentLauncher
private lateinit var permissionLauncher: PermissionLauncher private lateinit var permissionLauncher: PermissionLauncher
...@@ -119,13 +118,11 @@ class FileBrowseActivity : AppCompatActivity() { ...@@ -119,13 +118,11 @@ class FileBrowseActivity : AppCompatActivity() {
private fun fileMode() { private fun fileMode() {
binding.clLock.visibility = View.GONE binding.clLock.visibility = View.GONE
binding.clShow.visibility = View.VISIBLE binding.clShow.visibility = View.VISIBLE
loadDialog = showLoadingDialog()
loadData() loadData()
} }
private fun loadData() { private fun loadData() {
val loadDialog = showLoadingDialog()
when (tittle) { when (tittle) {
"Word" -> wordFile(this, "Word" -> wordFile(this,
onDoAction = { list -> onDoAction = { list ->
...@@ -264,7 +261,7 @@ class FileBrowseActivity : AppCompatActivity() { ...@@ -264,7 +261,7 @@ class FileBrowseActivity : AppCompatActivity() {
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
runOnUiThread { runOnUiThread {
toast("delete failed") loadData()
} }
} }
}.start() }.start()
......
...@@ -11,15 +11,13 @@ import androidx.navigation.fragment.findNavController ...@@ -11,15 +11,13 @@ import androidx.navigation.fragment.findNavController
import com.example.hfilemanagermaster.R import com.example.hfilemanagermaster.R
import com.example.hfilemanagermaster.databinding.FragmentFilesBinding import com.example.hfilemanagermaster.databinding.FragmentFilesBinding
import com.zxhy.hfilemanagermaster.OverviewActivity import com.zxhy.hfilemanagermaster.OverviewActivity
import com.zxhy.hfilemanagermaster.dialog.showLoadingDialog
import com.zxhy.hfilemanagermaster.image.ImageShowActivity import com.zxhy.hfilemanagermaster.image.ImageShowActivity
import com.zxhy.hfilemanagermaster.knife.recentPhoto import com.zxhy.hfilemanagermaster.knife.recentPhoto
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
/** /**
* A simple [Fragment] subclass.
* Use the [FilesFragment.newInstance] factory method to
* create an instance of this fragment.
*/ */
class FilesFragment : Fragment() { class FilesFragment : Fragment() {
private lateinit var binding: FragmentFilesBinding private lateinit var binding: FragmentFilesBinding
...@@ -29,7 +27,7 @@ class FilesFragment : Fragment() { ...@@ -29,7 +27,7 @@ class FilesFragment : Fragment() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
arguments?.let { arguments?.let {
} }
(activity as OverviewActivity).setStatusBarColor(R.color.white)
} }
override fun onCreateView( override fun onCreateView(
...@@ -53,6 +51,7 @@ class FilesFragment : Fragment() { ...@@ -53,6 +51,7 @@ class FilesFragment : Fragment() {
}) })
} }
} }
(activity as OverviewActivity).setStatusBarColor(R.color.white)
binding.ivImage.setOnClickListener { binding.ivImage.setOnClickListener {
findNavController().navigate(R.id.imageActivity) findNavController().navigate(R.id.imageActivity)
...@@ -84,26 +83,20 @@ class FilesFragment : Fragment() { ...@@ -84,26 +83,20 @@ class FilesFragment : Fragment() {
} }
findNavController().navigate(R.id.fileBrowseActivity, bundle) findNavController().navigate(R.id.fileBrowseActivity, bundle)
} }
loadData()
} }
override fun onResume() {
super.onResume() private fun loadData() {
val dialog = requireContext().showLoadingDialog()
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
val list = requireContext().recentPhoto() val list = requireContext().recentPhoto()
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
dialog.dismiss()
binding.rv.adapter = imageAdapter binding.rv.adapter = imageAdapter
imageAdapter.setData(list) imageAdapter.setData(list)
} }
} }
} }
companion object {
@JvmStatic
fun newInstance() =
FilesFragment().apply {
arguments = Bundle().apply {
}
}
}
} }
\ No newline at end of file
...@@ -33,7 +33,6 @@ class ImageActivity : AppCompatActivity() { ...@@ -33,7 +33,6 @@ class ImageActivity : AppCompatActivity() {
private lateinit var binding: ActivityImageBinding private lateinit var binding: ActivityImageBinding
private lateinit var imageAdapter: ImageSelectAdapter2 private lateinit var imageAdapter: ImageSelectAdapter2
private lateinit var loadDialog: Dialog
private lateinit var intentLauncher: IntentLauncher private lateinit var intentLauncher: IntentLauncher
private lateinit var permissionLauncher: PermissionLauncher private lateinit var permissionLauncher: PermissionLauncher
...@@ -112,11 +111,12 @@ class ImageActivity : AppCompatActivity() { ...@@ -112,11 +111,12 @@ class ImageActivity : AppCompatActivity() {
binding.clLock.visibility = View.GONE binding.clLock.visibility = View.GONE
binding.clShow.visibility = View.VISIBLE binding.clShow.visibility = View.VISIBLE
loadDialog = showLoadingDialog()
loadImageData() loadImageData()
} }
private fun loadImageData() { private fun loadImageData() {
val loadDialog = showLoadingDialog()
imageFile(this, imageFile(this,
onDoAction = { list -> onDoAction = { list ->
runOnUiThread { runOnUiThread {
...@@ -147,7 +147,8 @@ class ImageActivity : AppCompatActivity() { ...@@ -147,7 +147,8 @@ class ImageActivity : AppCompatActivity() {
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
runOnUiThread { runOnUiThread {
toast("delete failed") loadImageData()
// toast("delete failed")
} }
} }
}.start() }.start()
......
...@@ -40,6 +40,7 @@ class FileAdapter( ...@@ -40,6 +40,7 @@ class FileAdapter(
return mediaList.size return mediaList.size
} }
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: FileSelectViewHolder, position: Int) { override fun onBindViewHolder(holder: FileSelectViewHolder, position: Int) {
val context = holder.binding.root.context val context = holder.binding.root.context
val data = mediaList[position] val data = mediaList[position]
...@@ -73,7 +74,17 @@ class FileAdapter( ...@@ -73,7 +74,17 @@ class FileAdapter(
} }
tvName.text = data.name tvName.text = data.name
tvSize.text = data.size val file = File(data.path)
if (file.exists()) {
if (file.isFile) {
tvSize.text = data.size
}
if (file.isDirectory) {
tvSize.text = "${file.list()?.size ?: 0} items"
}
} else {
tvSize.text = "0 items"
}
ivSelector.isSelected = data.select ivSelector.isSelected = data.select
flSelector.setOnClickListener { flSelector.setOnClickListener {
data.select = !data.select data.select = !data.select
...@@ -130,7 +141,17 @@ class FileAdapter( ...@@ -130,7 +141,17 @@ class FileAdapter(
iv.setImageResource(R.drawable.icon_file_unknown) iv.setImageResource(R.drawable.icon_file_unknown)
} }
tvName.text = data.name tvName.text = data.name
tvSize.text = data.size val file = File(data.path)
if (file.exists()) {
if (file.isFile) {
tvSize.text = data.size
}
if (file.isDirectory) {
tvSize.text = "${file.list()?.size ?: 0} items"
}
} else {
tvSize.text = "0 items"
}
ivSelector.isSelected = data.select ivSelector.isSelected = data.select
flSelector.setOnClickListener { flSelector.setOnClickListener {
data.select = !data.select data.select = !data.select
......
...@@ -55,7 +55,6 @@ class InternalStorageActivity : AppCompatActivity() { ...@@ -55,7 +55,6 @@ class InternalStorageActivity : AppCompatActivity() {
private val selectedOperationMode = 2 private val selectedOperationMode = 2
private val lockMode = -1 private val lockMode = -1
private var currentMode = lockMode //0普通浏览模式 1可选模式 2选中操作模式 -1无权限锁功能模式 private var currentMode = lockMode //0普通浏览模式 1可选模式 2选中操作模式 -1无权限锁功能模式
private var popupWindow: PopupWindow? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
...@@ -233,6 +232,7 @@ class InternalStorageActivity : AppCompatActivity() { ...@@ -233,6 +232,7 @@ class InternalStorageActivity : AppCompatActivity() {
} }
} }
binding.ivMore.setOnClickListener { binding.ivMore.setOnClickListener {
if (fileAdapter.getSelectSize() == 0) return@setOnClickListener
showPopupMoreOperation() showPopupMoreOperation()
} }
} }
...@@ -349,103 +349,117 @@ class InternalStorageActivity : AppCompatActivity() { ...@@ -349,103 +349,117 @@ class InternalStorageActivity : AppCompatActivity() {
@SuppressLint("ClickableViewAccessibility", "InflateParams") @SuppressLint("ClickableViewAccessibility", "InflateParams")
private fun showPopupMoreOperation() { private fun showPopupMoreOperation() {
val yOff = resources.getDimensionPixelSize(R.dimen.dp_180) var yOff = 0
var height = 0
if (popupWindow == null) { val size = fileAdapter.getSelectFile().size
val popupWindowView = layoutInflater.inflate(R.layout.popupwindow_more_operation, null) val popupWindowView = layoutInflater.inflate(R.layout.popupwindow_more_operation, null)
val popupBinding = PopupwindowMoreOperationBinding.bind(popupWindowView) val popupBinding = PopupwindowMoreOperationBinding.bind(popupWindowView)
val width =
resources.getDimensionPixelSize(R.dimen.dp_150) if (size == 1) {
val height = yOff = resources.getDimensionPixelSize(R.dimen.dp_160)
resources.getDimensionPixelSize(R.dimen.dp_125) height = resources.getDimensionPixelSize(R.dimen.dp_118)
popupWindow = PopupWindow(popupWindowView, width, height, true) } else {
popupWindow?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) popupBinding.llRename.visibility = View.GONE
popupWindow?.isOutsideTouchable = true popupBinding.llDetails.visibility = View.GONE
popupWindow?.isTouchable = true yOff = resources.getDimensionPixelSize(R.dimen.dp_90)
popupWindow?.showAsDropDown(binding.ivPlaceholder, 0, -yOff) height = resources.getDimensionPixelSize(R.dimen.dp_46)
}
popupBinding.apply {
tvRename.setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
popupBinding.ivRename.isSelected = true
}
MotionEvent.ACTION_UP -> { val width =
popupBinding.ivRename.isSelected = false resources.getDimensionPixelSize(R.dimen.dp_118)
} val popupWindow = PopupWindow(popupWindowView, width, height, true)
popupWindow.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
popupWindow.isOutsideTouchable = true
popupWindow.isTouchable = true
else -> {} popupBinding.apply {
} llRename.setOnTouchListener { _, event ->
false
}
tvRename.setOnClickListener {
val list = fileAdapter.getSelectFile()
if (list.size == 1) {
val file = File(list.first().path)
popupWindow?.dismiss()
renameFile(file)
} else {
toast("Please select only one file!")
}
}
tvDelete.setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
popupBinding.ivDelete.isSelected = true
}
MotionEvent.ACTION_UP -> { when (event.action) {
popupBinding.ivDelete.isSelected = false MotionEvent.ACTION_DOWN -> {
} popupBinding.ivRename.isSelected = true
popupBinding.tvRename.isSelected = true
}
else -> {} MotionEvent.ACTION_UP -> {
popupBinding.ivRename.isSelected = false
popupBinding.tvRename.isSelected = false
} }
false
else -> {}
} }
tvDelete.setOnClickListener { false
val list = fileAdapter.getSelectFile() }
if (list.isEmpty()) return@setOnClickListener tvRename.setOnClickListener {
popupWindow?.dismiss() val list = fileAdapter.getSelectFile()
deleteFiles(list) if (list.size == 1) {
val file = File(list.first().path)
popupWindow.dismiss()
renameFile(file)
} else {
toast("Please select only one file!")
} }
tvDetails.setOnTouchListener { _, event -> }
when (event.action) { llDelete.setOnTouchListener { _, event ->
MotionEvent.ACTION_DOWN -> { when (event.action) {
popupBinding.ivDetails.isSelected = true MotionEvent.ACTION_DOWN -> {
} popupBinding.ivDelete.isSelected = true
popupBinding.tvDelete.isSelected = true
}
MotionEvent.ACTION_UP -> { MotionEvent.ACTION_UP -> {
popupBinding.ivDetails.isSelected = false popupBinding.ivDelete.isSelected = false
} popupBinding.tvDelete.isSelected = false
}
else -> {} else -> {}
}
false
}
tvDelete.setOnClickListener {
val list = fileAdapter.getSelectFile()
if (list.isEmpty()) return@setOnClickListener
popupWindow.dismiss()
deleteFiles(list)
}
llDetails.setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
popupBinding.ivDetails.isSelected = true
popupBinding.tvDetails.isSelected = true
} }
false
MotionEvent.ACTION_UP -> {
popupBinding.ivDetails.isSelected = false
popupBinding.tvDetails.isSelected = false
}
else -> {}
} }
tvDetails.setOnClickListener { false
}
val list = fileAdapter.getSelectFileIndex() tvDetails.setOnClickListener {
if (list.size == 1) {
val data = list.first() val list = fileAdapter.getSelectFileIndex()
val file = File(data.path) if (list.size == 1) {
if (file.exists()) { val data = list.first()
popupWindow?.dismiss() val file = File(data.path)
showFileDetailsDialog("File details", file, if (file.exists()) {
cancelAction = { popupWindow.dismiss()
fileAdapter.notifyItemIndex(data) showFileDetailsDialog("File details", file,
}, dismissAction = {}) cancelAction = {
} else { fileAdapter.notifyItemIndex(data)
toast("file don't exist!") }, dismissAction = {})
}
} else { } else {
toast("Please select only one file!") toast("file don't exist!")
} }
} else {
toast("Please select only one file!")
} }
} }
} else {
popupWindow?.showAsDropDown(binding.ivPlaceholder, 0, -yOff) popupWindow.showAsDropDown(binding.ivPlaceholder, 0, -yOff)
} }
} }
...@@ -486,7 +500,8 @@ class InternalStorageActivity : AppCompatActivity() { ...@@ -486,7 +500,8 @@ class InternalStorageActivity : AppCompatActivity() {
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
runOnUiThread { runOnUiThread {
toast("delete failed") loadFile()
// toast("delete failed")
} }
} }
}.start() }.start()
......
...@@ -20,7 +20,6 @@ class LargeFileFragment : Fragment() { ...@@ -20,7 +20,6 @@ class LargeFileFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
(activity as OverviewActivity).setStatusBarColor(R.color.color_C2F300)
} }
override fun onCreateView( override fun onCreateView(
...@@ -32,6 +31,11 @@ class LargeFileFragment : Fragment() { ...@@ -32,6 +31,11 @@ class LargeFileFragment : Fragment() {
return view return view
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
(activity as OverviewActivity).setStatusBarColor(R.color.color_C2F300)
}
companion object { companion object {
@JvmStatic @JvmStatic
......
...@@ -14,6 +14,7 @@ import com.zxhy.hfilemanagermaster.knife.getMountInfoList ...@@ -14,6 +14,7 @@ import com.zxhy.hfilemanagermaster.knife.getMountInfoList
import com.zxhy.hfilemanagermaster.permission.IntentLauncher import com.zxhy.hfilemanagermaster.permission.IntentLauncher
import com.zxhy.hfilemanagermaster.permission.PermissionLauncher import com.zxhy.hfilemanagermaster.permission.PermissionLauncher
import com.zxhy.hfilemanagermaster.permission.requestStoreFollow import com.zxhy.hfilemanagermaster.permission.requestStoreFollow
import com.zxhy.hfilemanagermaster.permission.storePermissionCheck
import java.math.BigDecimal import java.math.BigDecimal
/** /**
...@@ -95,13 +96,19 @@ class ManagerFragment : Fragment() { ...@@ -95,13 +96,19 @@ class ManagerFragment : Fragment() {
findNavController().navigate(R.id.internalStorageActivity) findNavController().navigate(R.id.internalStorageActivity)
} }
requireContext().requestStoreFollow( if (requireContext().storePermissionCheck()) {
(requireActivity() as OverviewActivity).permissionLauncher,
(requireActivity() as OverviewActivity).intentLauncher, } else {
disAgreeAction = { requireContext().requestStoreFollow(
}, (requireActivity() as OverviewActivity).permissionLauncher,
agreeAction = { (requireActivity() as OverviewActivity).intentLauncher,
}) disAgreeAction = {
},
agreeAction = {
})
}
} }
......
...@@ -77,12 +77,14 @@ fun Context.storePermissionCheck(): Boolean { ...@@ -77,12 +77,14 @@ fun Context.storePermissionCheck(): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {//Android 13以后 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {//Android 13以后
return Environment.isExternalStorageManager() return Environment.isExternalStorageManager()
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//Android 11以后 } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//Android 11以后
return Environment.isExternalStorageManager() && arrayOf( val flag1 = Environment.isExternalStorageManager()
val flag2 = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE Manifest.permission.WRITE_EXTERNAL_STORAGE
).all { ).all {
ContextCompat.checkSelfPermission(this, it) == PackageManager.PERMISSION_GRANTED ContextCompat.checkSelfPermission(this, it) == PackageManager.PERMISSION_GRANTED
} }
return flag1 or flag2
} else { //Android 11以下,Android 6以上 } else { //Android 11以下,Android 6以上
return arrayOf( return arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
......
...@@ -32,7 +32,6 @@ class VideoActivity : AppCompatActivity() { ...@@ -32,7 +32,6 @@ class VideoActivity : AppCompatActivity() {
private lateinit var binding: ActivityVideoBinding private lateinit var binding: ActivityVideoBinding
private lateinit var videoAdapter: VideoSelectAdapter private lateinit var videoAdapter: VideoSelectAdapter
private lateinit var loadDialog: Dialog
private lateinit var intentLauncher: IntentLauncher private lateinit var intentLauncher: IntentLauncher
private lateinit var permissionLauncher: PermissionLauncher private lateinit var permissionLauncher: PermissionLauncher
...@@ -108,7 +107,6 @@ class VideoActivity : AppCompatActivity() { ...@@ -108,7 +107,6 @@ class VideoActivity : AppCompatActivity() {
binding.clLock.visibility = View.GONE binding.clLock.visibility = View.GONE
binding.clShow.visibility = View.VISIBLE binding.clShow.visibility = View.VISIBLE
loadDialog = showLoadingDialog()
loadVideoData() loadVideoData()
} }
...@@ -129,12 +127,15 @@ class VideoActivity : AppCompatActivity() { ...@@ -129,12 +127,15 @@ class VideoActivity : AppCompatActivity() {
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
runOnUiThread { runOnUiThread {
toast("delete failed") loadVideoData()
// toast("delete failed")
} }
} }
}.start() }.start()
private fun loadVideoData() { private fun loadVideoData() {
val loadDialog = showLoadingDialog()
videoFile(this, videoFile(this,
onDoAction = { list -> onDoAction = { list ->
runOnUiThread { runOnUiThread {
......
...@@ -3,8 +3,10 @@ ...@@ -3,8 +3,10 @@
<item android:color="#333333" android:state_focused="true" /> <item android:color="#333333" android:state_focused="true" />
<item android:color="#333333" android:state_pressed="true" /> <item android:color="#333333" android:state_pressed="true" />
<item android:color="#333333" android:state_selected="true" />
<item android:color="#999999" android:state_focused="false" /> <item android:color="#999999" android:state_focused="false" />
<item android:color="#999999" android:state_pressed="false" /> <item android:color="#999999" android:state_pressed="false" />
<item android:color="#999999" android:state_selected="false" />
</selector> </selector>
\ No newline at end of file
...@@ -75,6 +75,7 @@ ...@@ -75,6 +75,7 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv" android:id="@+id/rv"
android:layout_width="0dp" android:layout_width="0dp"
android:overScrollMode="never"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_marginVertical="16dp" android:layout_marginVertical="16dp"
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@id/tv_all" app:layout_constraintRight_toLeftOf="@id/tv_all"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
...@@ -77,8 +77,9 @@ ...@@ -77,8 +77,9 @@
android:id="@+id/rv" android:id="@+id/rv"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="12dp"
android:layout_marginVertical="16dp" android:layout_marginVertical="16dp"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toTopOf="@id/tv_delete" app:layout_constraintBottom_toTopOf="@id/tv_delete"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
......
...@@ -73,10 +73,11 @@ ...@@ -73,10 +73,11 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv" android:id="@+id/rv"
android:layout_width="0dp" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="16dp" android:layout_marginVertical="16dp"
android:overScrollMode="never"
android:paddingHorizontal="6dp"
app:layout_constraintBottom_toTopOf="@id/tv_delete" app:layout_constraintBottom_toTopOf="@id/tv_delete"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
......
...@@ -160,6 +160,7 @@ ...@@ -160,6 +160,7 @@
<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:overScrollMode="never"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginBottom="12dp" android:layout_marginBottom="12dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
......
...@@ -125,6 +125,7 @@ ...@@ -125,6 +125,7 @@
android:layout_marginHorizontal="0dp" android:layout_marginHorizontal="0dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toTopOf="@id/tv_delete" app:layout_constraintBottom_toTopOf="@id/tv_delete"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
......
...@@ -17,70 +17,71 @@ ...@@ -17,70 +17,71 @@
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/nav" /> app:navGraph="@navigation/nav" />
<ImageView
android:id="@+id/iv_manager"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="100dp"
android:layout_marginBottom="55dp"
android:importantForAccessibility="no"
android:src="@drawable/manager_selector"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<FrameLayout <FrameLayout
android:id="@+id/fl_manager" android:id="@+id/fl_manager"
android:layout_width="84dp" android:layout_width="0dp"
android:layout_height="48dp"
app:layout_constraintBottom_toBottomOf="@id/iv_manager"
app:layout_constraintLeft_toLeftOf="@id/iv_manager"
app:layout_constraintRight_toRightOf="@id/iv_manager"
app:layout_constraintTop_toTopOf="@id/iv_manager" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginStart="50dp"
android:text="Manager" android:layout_marginBottom="25dp"
android:textAllCaps="false"
android:textColor="#333333"
android:textSize="10sp"
app:layout_constraintLeft_toLeftOf="@id/iv_manager"
app:layout_constraintRight_toRightOf="@id/iv_manager"
app:layout_constraintTop_toBottomOf="@id/iv_manager"
tools:ignore="HardcodedText,SmallSp" />
<ImageView
android:id="@+id/iv_tools"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="100dp"
android:layout_marginBottom="55dp"
android:importantForAccessibility="no"
android:src="@drawable/tools_selector"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" /> app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/fl_tools">
<ImageView
android:id="@+id/iv_manager"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
android:importantForAccessibility="no"
android:src="@drawable/manager_selector" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="48dp"
android:text="Manager"
android:textAllCaps="false"
android:textColor="#333333"
android:textSize="10sp"
tools:ignore="HardcodedText,SmallSp" />
</FrameLayout>
<FrameLayout <FrameLayout
android:id="@+id/fl_tools" android:id="@+id/fl_tools"
android:layout_width="84dp" android:layout_width="0dp"
android:layout_height="48dp"
app:layout_constraintBottom_toBottomOf="@id/iv_tools"
app:layout_constraintLeft_toLeftOf="@id/iv_tools"
app:layout_constraintRight_toRightOf="@id/iv_tools"
app:layout_constraintTop_toTopOf="@id/iv_tools" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginEnd="50dp"
android:text="Tools" android:layout_marginBottom="25dp"
android:textAllCaps="false" app:layout_constraintBottom_toBottomOf="parent"
android:textColor="#333333" app:layout_constraintLeft_toRightOf="@id/fl_manager"
android:textSize="10sp" app:layout_constraintRight_toRightOf="parent">
app:layout_constraintLeft_toLeftOf="@id/iv_tools"
app:layout_constraintRight_toRightOf="@id/iv_tools" <ImageView
app:layout_constraintTop_toBottomOf="@id/iv_tools" android:id="@+id/iv_tools"
tools:ignore="HardcodedText,SmallSp" /> android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
android:importantForAccessibility="no"
android:src="@drawable/tools_selector" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="48dp"
android:text="Tools"
android:textAllCaps="false"
android:textColor="#333333"
android:textSize="10sp"
tools:ignore="HardcodedText,SmallSp" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="228dp" android:layout_height="wrap_content"
android:layout_margin="5dp" android:layout_margin="5dp"
app:cardBackgroundColor="#FF1A1A1A" app:cardBackgroundColor="#FF1A1A1A"
app:cardCornerRadius="16dp" app:cardCornerRadius="16dp"
...@@ -94,13 +94,15 @@ ...@@ -94,13 +94,15 @@
<TextView <TextView
android:id="@+id/tv_position" android:id="@+id/tv_position"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginRight="20dp"
android:text="Position:" android:text="Position:"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="14sp" android:textSize="14sp"
app:layout_constraintLeft_toLeftOf="@id/iv_file" app:layout_constraintLeft_toLeftOf="@id/iv_file"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_time" app:layout_constraintTop_toBottomOf="@id/tv_time"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
...@@ -108,7 +110,7 @@ ...@@ -108,7 +110,7 @@
android:id="@+id/tv_cancel" android:id="@+id/tv_cancel"
android:layout_width="210dp" android:layout_width="210dp"
android:layout_height="40dp" android:layout_height="40dp"
android:layout_marginBottom="8dp" android:layout_marginVertical="8dp"
android:background="@mipmap/ds_0230" android:background="@mipmap/ds_0230"
android:gravity="center" android:gravity="center"
android:text="Sure" android:text="Sure"
...@@ -117,6 +119,7 @@ ...@@ -117,6 +119,7 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_position"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/white"
tools:context="com.zxhy.hfilemanagermaster.files.FilesFragment"> tools:context="com.zxhy.hfilemanagermaster.files.FilesFragment">
...@@ -194,10 +195,11 @@ ...@@ -194,10 +195,11 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv" android:id="@+id/rv"
android:layout_marginHorizontal="6dp" android:overScrollMode="never"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginHorizontal="6dp"
android:orientation="horizontal" android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_image" /> tools:listitem="@layout/item_image" />
......
...@@ -231,6 +231,7 @@ ...@@ -231,6 +231,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp" android:layout_marginHorizontal="16dp"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
app:cardCornerRadius="8dp"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_document"> app:layout_constraintTop_toBottomOf="@id/tv_document">
...@@ -250,7 +251,8 @@ ...@@ -250,7 +251,8 @@
app:layout_constraintHorizontal_chainStyle="spread_inside" app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/ll_word" app:layout_constraintRight_toLeftOf="@id/ll_word"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent"
tools:ignore="UseCompoundDrawables">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
android:id="@+id/iv" android:id="@+id/iv"
android:layout_width="80dp" android:layout_width="80dp"
android:layout_height="80dp" android:layout_height="80dp"
android:scaleType="centerCrop"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
\ No newline at end of file
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_margin="12dp"
android:layout_height="100dp" android:layout_height="100dp"
android:layout_margin="6dp"
app:cardCornerRadius="8dp"> app:cardCornerRadius="8dp">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
...@@ -18,12 +18,12 @@ ...@@ -18,12 +18,12 @@
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:src="@drawable/bg_circle_selector_c2f300"
android:id="@+id/iv_selector" android:id="@+id/iv_selector"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_marginHorizontal="2dp" android:layout_marginHorizontal="2dp"
android:layout_marginVertical="2dp" android:layout_marginVertical="2dp"
android:src="@drawable/bg_circle_selector_c2f300"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
android:id="@+id/iv" android:id="@+id/iv"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="40dp" android:layout_height="40dp"
android:layout_marginLeft="8dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:layout_width="106dp" android:layout_width="106dp"
android:layout_height="122dp" android:layout_height="wrap_content"
app:cardCornerRadius="4dp" app:cardCornerRadius="4dp"
app:cardElevation="5dp" app:cardElevation="5dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
...@@ -18,91 +18,114 @@ ...@@ -18,91 +18,114 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content">
<TextView <LinearLayout
android:id="@+id/tv_rename" android:id="@+id/ll_rename"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="36dp"
android:layout_marginLeft="12dp" android:orientation="horizontal"
android:background="@null" app:layout_constraintBottom_toTopOf="@id/ll_delete"
android:clickable="true" app:layout_constraintTop_toTopOf="parent">
android:focusable="true"
android:text="Rename"
android:textColor="@drawable/textcolor_selector"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/tv_delete"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText,RtlHardcoded" />
<ImageView <TextView
android:id="@+id/iv_rename" android:id="@+id/tv_rename"
android:layout_width="24dp" android:layout_width="0dp"
android:layout_height="24dp" android:layout_height="wrap_content"
android:layout_marginRight="3dp" android:layout_gravity="center_vertical"
android:clickable="true" android:layout_weight="1"
android:focusable="true" android:background="@null"
android:src="@drawable/bg_circle_selector_press_c2f300" android:clickable="true"
app:layout_constraintBottom_toBottomOf="@id/tv_rename" android:focusable="true"
app:layout_constraintRight_toRightOf="parent" android:paddingLeft="12dp"
app:layout_constraintTop_toTopOf="@id/tv_rename" android:text="Rename"
tools:ignore="ContentDescription,RtlHardcoded" /> android:textColor="@drawable/textcolor_selector"
android:textSize="16sp"
tools:ignore="HardcodedText,RtlHardcoded,RtlSymmetry" />
<TextView <ImageView
android:id="@+id/tv_delete" android:id="@+id/iv_rename"
android:layout_width="wrap_content" android:layout_width="24dp"
android:layout_height="wrap_content" android:layout_height="24dp"
android:clickable="true" android:layout_gravity="center_vertical"
android:focusable="true" android:layout_marginRight="3dp"
android:text="Delete" android:clickable="true"
android:textColor="@drawable/textcolor_selector" android:focusable="true"
android:textSize="16sp" android:src="@drawable/bg_circle_selector_press_c2f300"
app:layout_constraintBottom_toTopOf="@id/tv_Details" android:visibility="gone"
app:layout_constraintLeft_toLeftOf="@id/tv_rename" tools:ignore="ContentDescription,RtlHardcoded" />
app:layout_constraintTop_toBottomOf="@id/tv_rename"
tools:ignore="HardcodedText" />
<ImageView </LinearLayout>
android:id="@+id/iv_delete"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginRight="3dp"
android:clickable="true"
android:focusable="true"
android:src="@drawable/bg_circle_selector_press_c2f300"
app:layout_constraintBottom_toBottomOf="@id/tv_delete"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_delete"
tools:ignore="ContentDescription,RtlHardcoded" />
<TextView <LinearLayout
android:id="@+id/tv_Details" android:id="@+id/ll_delete"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="36dp"
android:clickable="true" android:orientation="horizontal"
android:focusable="true" app:layout_constraintBottom_toTopOf="@id/ll_Details"
android:text="Details" app:layout_constraintTop_toBottomOf="@id/ll_rename">
android:textColor="@drawable/textcolor_selector"
android:textSize="16sp" <TextView
android:id="@+id/tv_delete"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:clickable="true"
android:focusable="true"
android:paddingStart="12dp"
android:text="Delete"
android:textColor="@drawable/textcolor_selector"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/iv_delete"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="3dp"
android:clickable="true"
android:focusable="true"
android:src="@drawable/bg_circle_selector_press_c2f300"
android:visibility="gone"
tools:ignore="ContentDescription,RtlHardcoded" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_Details"
android:layout_width="match_parent"
android:layout_height="36dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/tv_rename" app:layout_constraintTop_toBottomOf="@id/ll_delete">
app:layout_constraintTop_toBottomOf="@id/tv_delete"
tools:ignore="HardcodedText" />
<ImageView <TextView
android:id="@+id/iv_details" android:id="@+id/tv_Details"
android:layout_width="24dp" android:layout_width="0dp"
android:layout_height="24dp" android:layout_height="wrap_content"
android:layout_marginRight="3dp" android:layout_gravity="center_vertical"
android:clickable="true" android:layout_weight="1"
android:focusable="true" android:clickable="true"
android:src="@drawable/bg_circle_selector_press_c2f300" android:focusable="true"
app:layout_constraintBottom_toBottomOf="@id/tv_Details" android:paddingStart="12dp"
app:layout_constraintRight_toRightOf="parent" android:text="Details"
app:layout_constraintTop_toTopOf="@id/tv_Details" android:textColor="@drawable/textcolor_selector"
tools:ignore="ContentDescription,RtlHardcoded" /> android:textSize="16sp"
tools:ignore="HardcodedText,RtlSymmetry" />
<ImageView
android:id="@+id/iv_details"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="3dp"
android:clickable="true"
android:focusable="true"
android:src="@drawable/bg_circle_selector_press_c2f300"
android:visibility="gone"
tools:ignore="ContentDescription,RtlHardcoded" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
......
...@@ -6,8 +6,10 @@ ...@@ -6,8 +6,10 @@
<dimen name="dp_120">120dp</dimen> <dimen name="dp_120">120dp</dimen>
<dimen name="dp_122">122dp</dimen> <dimen name="dp_122">122dp</dimen>
<dimen name="dp_125">125dp</dimen> <dimen name="dp_125">125dp</dimen>
<dimen name="dp_82">82dp</dimen>
<dimen name="dp_140">140dp</dimen> <dimen name="dp_140">140dp</dimen>
<dimen name="dp_180">180dp</dimen> <dimen name="dp_180">180dp</dimen>
<dimen name="dp_118">118dp</dimen>
<dimen name="dp_12">12dp</dimen> <dimen name="dp_12">12dp</dimen>
<dimen name="dp_15">15dp</dimen> <dimen name="dp_15">15dp</dimen>
<dimen name="dp_18">18dp</dimen> <dimen name="dp_18">18dp</dimen>
...@@ -20,4 +22,9 @@ ...@@ -20,4 +22,9 @@
<dimen name="dp_255">255dp</dimen> <dimen name="dp_255">255dp</dimen>
<dimen name="dp_177">177dp</dimen> <dimen name="dp_177">177dp</dimen>
<dimen name="dp_233">233dp</dimen> <dimen name="dp_233">233dp</dimen>
<dimen name="dp_46">46dp</dimen>
<dimen name="dp_60">60dp</dimen>
<dimen name="dp_80">80dp</dimen>
<dimen name="dp_90">90dp</dimen>
<dimen name="dp_160">160dp</dimen>
</resources> </resources>
\ No newline at end of file
<resources> <resources>
<string name="app_name">HFileManagerMaster</string> <string name="app_name">Manager Master</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string> <string name="hello_blank_fragment">Hello blank fragment</string>
</resources> </resources>
\ 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