Commit 4dcfc53e authored by wanglei's avatar wanglei

feat:白包版本

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