Commit 0f0e2911 authored by wanglei's avatar wanglei

完善代码

parent c6a412c7
...@@ -35,6 +35,33 @@ android { ...@@ -35,6 +35,33 @@ android {
} }
buildFeatures { buildFeatures {
viewBinding = true viewBinding = true
buildConfig = true
}
lint {
//https://blog.csdn.net/destiny1507/article/details/104329583
checkReleaseBuilds = false
abortOnError = false
}
signingConfigs {
create("keyStore") {
storeFile = file("../kokoAndroidConfigure.jks")
storePassword = "wenlu1796"
keyAlias = "Smilekoko"
keyPassword = "wanglei1796"
}
}
buildTypes {
val signConfig = signingConfigs.getByName("keyStore")
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
signingConfig = signConfig
}
} }
} }
......
...@@ -177,8 +177,9 @@ class KoInternalkoActivity : AppCompatActivity() { ...@@ -177,8 +177,9 @@ class KoInternalkoActivity : AppCompatActivity() {
binding.llOperation.visibility = View.GONE binding.llOperation.visibility = View.GONE
binding.clOperationConfirm.visibility = View.VISIBLE binding.clOperationConfirm.visibility = View.VISIBLE
adapter.showSelectMode(false) adapter.showSelectMode(false, false)
adapter.setCannotDir(data.filter { it.isDirectory }) adapter.setCannotDir(data)
adapter.pageRoot()
binding.tvConfirmItems.text = "${data.size} items" binding.tvConfirmItems.text = "${data.size} items"
when (operation) { when (operation) {
...@@ -213,6 +214,7 @@ class KoInternalkoActivity : AppCompatActivity() { ...@@ -213,6 +214,7 @@ class KoInternalkoActivity : AppCompatActivity() {
} }
} }
binding.tvCancel.setOnClickListener { binding.tvCancel.setOnClickListener {
adapter.clearCannotDir()
browserMode() browserMode()
} }
} }
...@@ -294,12 +296,14 @@ class KoInternalkoActivity : AppCompatActivity() { ...@@ -294,12 +296,14 @@ class KoInternalkoActivity : AppCompatActivity() {
binding.llCopy.isEnabled = true binding.llCopy.isEnabled = true
binding.llMove.isEnabled = true binding.llMove.isEnabled = true
binding.llRename.isEnabled = true binding.llRename.isEnabled = true
binding.llRename.visibility = View.VISIBLE
} else { } else {
binding.llShare.isEnabled = true binding.llShare.isEnabled = true
binding.llDelete.isEnabled = true binding.llDelete.isEnabled = true
binding.llCopy.isEnabled = true binding.llCopy.isEnabled = true
binding.llMove.isEnabled = true binding.llMove.isEnabled = true
binding.llRename.isEnabled = false binding.llRename.isEnabled = false
binding.llRename.visibility = View.GONE
} }
} }
......
package com.zxhy.fastfilemanagerpro.kokoInternalstorage package com.zxhy.fastfilemanagerpro.kokoInternalstorage
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context import android.content.Context
import android.graphics.ColorMatrix
import android.graphics.ColorMatrixColorFilter
import android.graphics.Paint
import android.os.Environment import android.os.Environment
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -17,6 +21,7 @@ import com.zxhy.fastfilemanagerpro.kokodata.KoFileDatako.Companion.toFile ...@@ -17,6 +21,7 @@ import com.zxhy.fastfilemanagerpro.kokodata.KoFileDatako.Companion.toFile
import com.zxhy.fastfilemanagerpro.kokotools.XmlEx.inflate import com.zxhy.fastfilemanagerpro.kokotools.XmlEx.inflate
import java.io.File import java.io.File
class KoInternalkoAdapter( class KoInternalkoAdapter(
private val context: Context, private val context: Context,
private val allSelect: (flag: Boolean) -> Unit, private val allSelect: (flag: Boolean) -> Unit,
...@@ -37,9 +42,11 @@ class KoInternalkoAdapter( ...@@ -37,9 +42,11 @@ class KoInternalkoAdapter(
} }
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
fun showSelectMode(show: Boolean) { fun showSelectMode(show: Boolean, refresh: Boolean = true) {
selectMode = show selectMode = show
notifyDataSetChanged() if (refresh) {
notifyDataSetChanged()
}
} }
class KoInternalkoViewHolder(view: View) : ViewHolder(view) { class KoInternalkoViewHolder(view: View) : ViewHolder(view) {
...@@ -68,10 +75,10 @@ class KoInternalkoAdapter( ...@@ -68,10 +75,10 @@ class KoInternalkoAdapter(
data.loadImageIcon(context, ivIcon) data.loadImageIcon(context, ivIcon)
if (cannotFiles.contains(data.toFile().absolutePath)) { if (cannotFiles.contains(data.toFile().absolutePath)) {
root.setBackgroundColor(ContextCompat.getColor(context, R.color.color_606060)) vOverly.visibility = View.VISIBLE
root.setOnClickListener { } root.setOnClickListener { }
} else { } else {
root.setBackgroundColor(ContextCompat.getColor(context, R.color.color_ffffff)) vOverly.visibility = View.GONE
root.setOnClickListener { root.setOnClickListener {
if (canPage) { if (canPage) {
pageNext(context, data) pageNext(context, data)
...@@ -102,6 +109,12 @@ class KoInternalkoAdapter( ...@@ -102,6 +109,12 @@ class KoInternalkoAdapter(
} }
} }
fun pageRoot() {
currentDir = Environment.getExternalStorageDirectory()
val list = currentDir.listFiles()?.map { it.koFileDatako(context) } ?: listOf()
setData(list)
}
private fun pageNext(context: Context, data: KoFileDatako) { private fun pageNext(context: Context, data: KoFileDatako) {
val list = data.toFile().listFiles()?.map { it.koFileDatako(context) } ?: listOf() val list = data.toFile().listFiles()?.map { it.koFileDatako(context) } ?: listOf()
setData(list) setData(list)
...@@ -138,10 +151,17 @@ class KoInternalkoAdapter( ...@@ -138,10 +151,17 @@ class KoInternalkoAdapter(
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
fun setCannotDir(dirs: List<File>) { fun setCannotDir(dirs: List<File>) {
cannotFiles.addAll(dirs.map { it.absolutePath }) cannotFiles.addAll(dirs.map { it.absolutePath })
notifyDataSetChanged()
} }
fun clearCannotDir() { fun clearCannotDir() {
cannotFiles.clear() cannotFiles.clear()
} }
fun aa(view: View, context: Context) {
val paint = Paint()
val cm = ColorMatrix()
cm.setSaturation(0f)
paint.setColorFilter(ColorMatrixColorFilter(cm))
view.setLayerType(View.LAYER_TYPE_HARDWARE, paint)
}
} }
\ No newline at end of file
...@@ -20,7 +20,7 @@ class KoDupFilekoViewModel : CommonViewModel() { ...@@ -20,7 +20,7 @@ class KoDupFilekoViewModel : CommonViewModel() {
} }
fun isDupFileFilter(file: File): Boolean { fun isDupFileFilter(file: File): Boolean {
return file.length() > 0 return file.length() > 0 && !isImageFilter(file)
} }
......
...@@ -45,9 +45,9 @@ object PermissionEx { ...@@ -45,9 +45,9 @@ object PermissionEx {
fun Context.alert( fun Context.alert(
title: String = "", title: String = "",
message: String, message: String,
positiveButtonText: String = "", positiveButtonText: String = "Jump",
positiveButton: (() -> Unit)? = null, positiveButton: (() -> Unit)? = null,
negativeButtonText: String = "", negativeButtonText: String = "Cancel",
negativeButton: (() -> Unit)? = null, negativeButton: (() -> Unit)? = null,
) { ) {
val builder = MaterialAlertDialogBuilder(this) val builder = MaterialAlertDialogBuilder(this)
...@@ -61,7 +61,8 @@ object PermissionEx { ...@@ -61,7 +61,8 @@ object PermissionEx {
} }
val dialog = builder.create() val dialog = builder.create()
dialog.setCanceledOnTouchOutside(false) dialog.setCanceledOnTouchOutside(false)
dialog.setTitle(title) // dialog.setTitle(title)
dialog.setMessage(message) dialog.setMessage(message)
dialog.show()
} }
} }
package com.zxhy.fastfilemanagerpro.widget
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.ColorFilter
import android.graphics.ColorMatrix
import android.graphics.ColorMatrixColorFilter
import android.graphics.Paint
import android.graphics.PorterDuff
import android.graphics.PorterDuffColorFilter
import android.util.AttributeSet
import android.widget.LinearLayout
class GrayLinearLayout : LinearLayout {
private val mPaint = Paint()
private var flag = false
var filter: ColorFilter =
PorterDuffColorFilter(Color.rgb(34, 136, 201), PorterDuff.Mode.OVERLAY)
constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
val cm = ColorMatrix()
cm.setSaturation(0f)
mPaint.setColorFilter(ColorMatrixColorFilter(cm))
// mPaint.setColorFilter(filter)
}
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
override fun onDraw(canvas: Canvas) {
if (flag) {
canvas.saveLayer(null, mPaint, Canvas.ALL_SAVE_FLAG)
}
super.onDraw(canvas)
}
override fun dispatchDraw(canvas: Canvas) {
if (flag) {
canvas.saveLayer(null, mPaint, Canvas.ALL_SAVE_FLAG)
super.dispatchDraw(canvas)
canvas.restore()
}
super.dispatchDraw(canvas)
}
fun setGray(flag: Boolean) {
this.flag = flag
invalidate()
}
}
\ No newline at end of file
...@@ -2,21 +2,21 @@ ...@@ -2,21 +2,21 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
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_marginHorizontal="20dp"
android:layout_marginVertical="12dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="12dp">
<ImageView <ImageView
android:src="@mipmap/qwe_889989111"
android:id="@+id/iv_icon" android:id="@+id/iv_icon"
android:layout_width="45dp" android:layout_width="45dp"
android:layout_height="45dp" android:layout_height="45dp"
android:src="@mipmap/qwe_889989111"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<LinearLayout <com.zxhy.fastfilemanagerpro.widget.GrayLinearLayout
android:id="@+id/ll" android:id="@+id/ll"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
...@@ -46,17 +46,29 @@ ...@@ -46,17 +46,29 @@
android:textColor="#666666" android:textColor="#666666"
android:textSize="12sp" android:textSize="12sp"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
</LinearLayout> </com.zxhy.fastfilemanagerpro.widget.GrayLinearLayout>
<ImageView <ImageView
android:src="@drawable/bg_file_selector"
android:id="@+id/iv_selector" android:id="@+id/iv_selector"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_marginEnd="6dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_marginEnd="6dp"
android:src="@drawable/bg_file_selector"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ll"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<View
android:visibility="gone"
android:id="@+id/v_overly"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/color_80000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -11,4 +11,6 @@ ...@@ -11,4 +11,6 @@
<color name="color_fffdf6">#FFFDF6</color> <color name="color_fffdf6">#FFFDF6</color>
<color name="color_494949">#494949</color> <color name="color_494949">#494949</color>
<color name="color_faf6e9">#FAF6E9</color> <color name="color_faf6e9">#FAF6E9</color>
<color name="color_798fad">#798FAD</color>
<color name="color_80000000">#80000000</color>
</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