Commit 6d5b62b6 authored by 许译文's avatar 许译文

file manager select的图片选择清理功能以及其他逻辑实现

parent 384816a3
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
namespace 'com.zxhyis.tools'
compileSdk 33
defaultConfig {
applicationId "com.zxhyis.tools"
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures{
viewBinding true
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.airbnb.android:lottie:6.2.0'
implementation("androidx.datastore:datastore-preferences:1.0.0")
implementation("com.github.pokercc:ExpandableRecyclerView:0.9.3")
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1"
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".FileApp"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.FileManagerSelect"
tools:targetApi="31">
<activity
android:name=".ui.fun.ResultActivity"
android:exported="false" />
<activity
android:name=".ui.fun.PictureDetailActivity"
android:exported="false" />
<activity
android:name=".ui.fun.ApkListActivity"
android:exported="false" />
<activity
android:name=".ui.fun.AudioActivity"
android:exported="false" />
<activity
android:name=".ui.fun.VideoActivity"
android:exported="false" />
<activity
android:name=".ui.fun.PictureActivity"
android:exported="false" />
<activity
android:name=".ui.home.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
\ No newline at end of file
package com.zxhyis.tools
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
class FileApp : Application() {
companion object{
@SuppressLint("StaticFieldLeak")
@JvmStatic
lateinit var fContext:Context
}
override fun onCreate() {
super.onCreate()
fContext=this
}
}
\ No newline at end of file
package com.zxhyis.tools.logic
import android.graphics.Bitmap
import java.io.File
data class ImageInfoBean(
val imagePath:String,
val imageBitmap:Bitmap,
val file:File,
var isShow:Boolean=false,
var isSelected:Boolean=false
)
package com.zxhyis.tools.logic
object Counts {
const val REQUEST_ALL_FILE=30
}
\ No newline at end of file
......@@ -4,7 +4,9 @@ import android.app.Activity
import android.content.Context
import android.content.Intent
import android.view.View
import android.widget.Toast
import androidx.core.os.bundleOf
import com.zxhyis.tools.FileApp
inline fun <reified T : Activity> Context.startActivity(vararg params: Pair<String, Any?>) {
val intent = Intent(this, T::class.java)
......@@ -16,4 +18,8 @@ fun View.setOnClick(action: () -> Unit) {
this.setOnClickListener { action() }
}
fun String.showToast(duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(FileApp.fContext, this, duration).show()
}
package com.zxhyis.tools.ui.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
open class CommonAdapter<T> constructor(
private val layoutId: Int,
private val dataList: ArrayList<T>,
private val bindHolder: View.(T) -> Unit
) : RecyclerView.Adapter<CommonAdapter.ViewHolder>() {
private var itemClick: T.() -> Unit = {}
constructor(layoutId: Int,
itemList: ArrayList<T>,
bindHolder: View.(T) -> Unit,
itemClick: T.() -> Unit = {}) : this(layoutId,itemList, bindHolder) {
this.itemClick = itemClick
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView=LayoutInflater.from(parent.context).inflate(layoutId,parent,false)
return ViewHolder(itemView)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val type=dataList[position]
holder.itemView.bindHolder(type)
holder.itemView.setOnClickListener {
itemOnClick(it,position)
}
}
override fun getItemCount()=dataList.size
open fun itemOnClick(itemView: View,position: Int){
dataList[position].itemClick()
}
}
package com.zxhyis.tools.ui.dialog
import androidx.fragment.app.DialogFragment
class FIleDialog:DialogFragment() {
}
\ No newline at end of file
package com.zxhyis.tools.ui.`fun`
import com.zxhyis.tools.base.TopActivity
import com.zxhyis.tools.databinding.ActivityApkListBinding
class ApkListActivity : TopActivity<ActivityApkListBinding>() {
override fun getViewBinding1(): ActivityApkListBinding {
return ActivityApkListBinding.inflate(layoutInflater)
}
override fun init() {
}
}
\ No newline at end of file
package com.zxhyis.tools.ui.`fun`
import com.zxhyis.tools.base.TopActivity
import com.zxhyis.tools.databinding.ActivityAudioBinding
class AudioActivity : TopActivity<ActivityAudioBinding>() {
override fun getViewBinding1(): ActivityAudioBinding {
return ActivityAudioBinding.inflate(layoutInflater)
}
override fun init() {
}
}
\ No newline at end of file
This diff is collapsed.
package com.zxhyis.tools.ui.`fun`
import android.annotation.SuppressLint
import android.graphics.BitmapFactory
import com.zxhyis.tools.base.TopActivity
import com.zxhyis.tools.databinding.ActivityPictureDetailBinding
import com.zxhyis.tools.logic.setOnClick
class PictureDetailActivity : TopActivity<ActivityPictureDetailBinding>() {
override fun getViewBinding1(): ActivityPictureDetailBinding {
return ActivityPictureDetailBinding.inflate(layoutInflater)
}
@SuppressLint("Recycle")
override fun init() {
val imagePath=intent.getStringExtra("image_path")
val bitmap = BitmapFactory.decodeFile(imagePath)
vb.imageDetail.setImageBitmap(bitmap)
vb.inImageDetail.ivBack.setOnClick {
finish()
}
}
}
\ No newline at end of file
package com.zxhyis.tools.ui.`fun`
import com.zxhyis.tools.base.TopActivity
import com.zxhyis.tools.databinding.ActivityResultBinding
class ResultActivity : TopActivity<ActivityResultBinding>() {
override fun getViewBinding1(): ActivityResultBinding {
return ActivityResultBinding.inflate(layoutInflater)
}
override fun init() {
}
}
\ No newline at end of file
package com.zxhyis.tools.ui.`fun`
import com.zxhyis.tools.base.TopActivity
import com.zxhyis.tools.databinding.ActivityVideoBinding
class VideoActivity : TopActivity<ActivityVideoBinding>() {
override fun getViewBinding1(): ActivityVideoBinding {
return ActivityVideoBinding.inflate(layoutInflater)
}
override fun init() {
}
}
\ No newline at end of file
package com.zxhyis.tools.ui.home
import android.os.Bundle
import android.os.Environment
import android.os.StatFs
import android.text.format.Formatter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.zxhyis.tools.base.TopFragment
import com.zxhyis.tools.databinding.FragmentHomeBinding
import com.zxhyis.tools.logic.setOnClick
import com.zxhyis.tools.logic.startActivity
import com.zxhyis.tools.ui.`fun`.PictureActivity
class HomeFragment : TopFragment<FragmentHomeBinding>() {
......@@ -19,10 +25,24 @@ class HomeFragment : TopFragment<FragmentHomeBinding>() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mK.pb.setProgress(30f)
mK.pb.setProgressColor(0xFFFFFF)
mK.pb.setBackColor(0x52FFFFFF)
mK.pb.setStrokeWidth(8f)
init()
}
private fun init(){
val stat = StatFs(Environment.getExternalStorageDirectory().path)
val totalSize = stat.totalBytes
val availableSize = stat.availableBytes
val usedSize = totalSize - availableSize
val usedPercentage = usedSize.toFloat() / totalSize * 100
mK.pb.progress=usedPercentage.toInt()
mK.tvProgress.text="${usedPercentage.toInt()}"
mK.tvFreeSize.text=Formatter.formatFileSize(requireActivity(),availableSize)
mK.tvUsedSize.text=Formatter.formatFileSize(requireActivity(),usedSize)
mK.clsPicture.setOnClick {
requireActivity().startActivity<PictureActivity>()
}
}
......
package com.zxhyis.tools.ui.view
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.RectF
import android.util.AttributeSet
import android.view.View
import androidx.core.content.ContextCompat
import com.zxhyis.tools.R
import kotlin.math.min
class CircularPr (context: Context, attrs: AttributeSet) : View(context, attrs){
private var progressPaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG)
private var backgroundPaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG)
private var progress = 0f
private var maxProgress = 100f
private var progressColor = ContextCompat.getColor(context, R.color.main_color)
private var backgroundColor = ContextCompat.getColor(context, R.color.second_color)
private var strokeWidth = 20f
private var angle = 0f
private var rectF = RectF()
init {
progressPaint.color = progressColor
progressPaint.style = Paint.Style.STROKE
progressPaint.strokeWidth = strokeWidth
backgroundPaint.color = backgroundColor
backgroundPaint.style = Paint.Style.STROKE
backgroundPaint.strokeWidth = strokeWidth
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
val centerX = width / 2f
val centerY = height / 2f
val radius = min(centerX, centerY) - strokeWidth / 2
rectF.set(centerX - radius, centerY - radius, centerX + radius, centerY + radius)
canvas.drawCircle(centerX, centerY, radius, backgroundPaint)
canvas.drawArc(rectF, -90f, angle, false, progressPaint)
}
fun setProgress(progress: Float) {
this.progress = progress
this.angle = 360 * progress / maxProgress
invalidate()
}
fun setMaxProgress(maxProgress: Float) {
this.maxProgress = maxProgress
}
fun setProgressColor(color: Int) {
this.progressColor = color
progressPaint.color = progressColor
invalidate()
}
fun setBackColor(color: Int) {
this.backgroundColor = color
backgroundPaint.color = backgroundColor
invalidate()
}
fun setStrokeWidth(width: Float) {
this.strokeWidth = width
progressPaint.strokeWidth = strokeWidth
backgroundPaint.strokeWidth = strokeWidth
invalidate()
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_selected_all" android:state_selected="true"/>
<item android:drawable="@drawable/iamge_unselected_all"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_selected" android:state_selected="true"/>
<item android:drawable="@drawable/image_unselected"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:width="289dp" android:height="50dp">
<shape android:shape="rectangle">
<solid android:color="#EEEEEE" />
<corners android:topLeftRadius="25dp" android:topRightRadius="25dp" android:bottomLeftRadius="25dp" android:bottomRightRadius="25dp" />
</shape>
</item>
</selector>
\ No newline at end of file
......@@ -4,13 +4,14 @@
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<path
android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:startX="42.9492"
android:endY="92.4963"
android:endX="85.84757"
android:type="linear">
<item
android:color="#44000000"
......@@ -22,9 +23,9 @@
</aapt:attr>
</path>
<path
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
android:strokeColor="#00000000"/>
</vector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.fun.ApkListActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.fun.AudioActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
tools:context=".ui.fun.PictureActivity">
<include
android:id="@+id/in_picture"
layout="@layout/layout_title"/>
<androidx.appcompat.widget.AppCompatImageView
android:visibility="gone"
app:layout_constraintVertical_bias="0.3"
android:id="@+id/image_per"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_permission"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/in_picture" />
<androidx.appcompat.widget.AppCompatTextView
android:visibility="gone"
android:id="@+id/tv_des"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="There are no permissions We need to get\npermission to read all files."
android:textColor="#ff999999"
android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image_per" />
<androidx.appcompat.widget.AppCompatTextView
android:visibility="gone"
android:textSize="19sp"
android:textStyle="bold"
android:textColor="#fff"
android:gravity="center"
android:id="@+id/tv_set"
android:text="@string/tv_set"
android:background="@drawable/bg_shape_set"
android:layout_marginTop="50dp"
android:layout_marginStart="43dp"
android:layout_marginEnd="43dp"
android:layout_width="match_parent"
android:layout_height="50dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_des" />
<androidx.recyclerview.widget.RecyclerView
android:visibility="visible"
android:layout_marginBottom="15dp"
android:id="@+id/rv_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="15dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="15dp"
app:layout_constraintBottom_toTopOf="@+id/ll_bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/in_picture" />
<androidx.appcompat.widget.AppCompatImageView
android:visibility="gone"
android:id="@+id/image_load"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image_load"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.4" />
<androidx.appcompat.widget.AppCompatTextView
android:visibility="gone"
android:id="@+id/tv_load"
android:gravity="center"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This process may take a few seconds,\nplease wait a moment"
android:textColor="#ff999999"
android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image_load" />
<androidx.appcompat.widget.AppCompatImageView
android:visibility="gone"
android:id="@+id/ic_no_file"
app:layout_constraintVertical_bias="0.3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_no_file"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/in_picture" />
<androidx.appcompat.widget.AppCompatTextView
android:visibility="gone"
android:id="@+id/tv_no_file"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/file_not_found"
android:textColor="#ff999999"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="@+id/ic_no_file"
app:layout_constraintStart_toStartOf="@+id/ic_no_file"
app:layout_constraintTop_toBottomOf="@+id/ic_no_file" />
<androidx.appcompat.widget.LinearLayoutCompat
android:visibility="gone"
android:layout_marginStart="30dp"
android:layout_marginEnd="30dp"
android:id="@+id/ll_bottom"
android:layout_width="match_parent"
android:layout_height="80dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<androidx.appcompat.widget.LinearLayoutCompat
android:gravity="top|center_horizontal"
android:orientation="vertical"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_share"
android:padding="10dp"
android:src="@drawable/ic_share"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_share"
android:layout_marginTop="-10dp"
android:textStyle="bold"
android:text="@string/tv_share"
android:textColor="#ff666666"
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:gravity="top|center_horizontal"
android:orientation="vertical"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_delete"
android:padding="10dp"
android:src="@drawable/ic_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_delete"
android:layout_marginTop="-10dp"
android:textStyle="bold"
android:text="@string/tv_delete"
android:textColor="#ff666666"
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.fun.PictureDetailActivity">
<include
android:id="@+id/in_image_detail"
layout="@layout/layout_only_back"/>
<androidx.appcompat.widget.AppCompatImageView
android:scaleType="fitXY"
android:layout_marginBottom="20dp"
android:id="@+id/image_detail"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/linearLayoutCompat2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/in_image_detail" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/linearLayoutCompat2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:layout_marginBottom="64.5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_shape_set"
android:gravity="center"
android:text="@string/tv_delete"
android:textColor="#ffffffff"
android:textSize="19sp"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="35dp"
android:layout_weight="1"
android:background="@drawable/bg_shape_recovery"
android:gravity="center"
android:text="@string/tv_recovery"
android:textColor="#000000"
android:textSize="19sp"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.fun.ResultActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.fun.VideoActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -34,17 +34,49 @@
app:layout_constraintTop_toTopOf="parent">
<com.zxhyis.tools.ui.view.CircularPr
<com.google.android.material.progressindicator.CircularProgressIndicator
android:progress="70"
app:indicatorColor="#fff"
app:indicatorSize="78dp"
app:trackThickness="8dp"
app:trackColor="#52FFFFFF"
app:layout_constraintHorizontal_bias="0.05"
android:id="@+id/pb"
android:layout_width="78dp"
android:layout_height="78dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/pb"
app:layout_constraintEnd_toEndOf="@+id/pb"
app:layout_constraintStart_toStartOf="@+id/pb"
app:layout_constraintTop_toTopOf="@+id/pb">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="70"
android:textColor="#fff"
android:textSize="25sp"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="%"
android:textColor="#fff"
android:textSize="14sp"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:paddingHorizontal="10dp"
android:orientation="vertical"
......@@ -117,7 +149,7 @@
android:layout_height="80dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/csl_picture"
android:id="@+id/cls_picture"
android:background="@drawable/bg_shape_home_item"
android:layout_weight="1"
android:layout_width="0dp"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_image"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginTop="12dp"
android:scaleType="centerCrop"
android:src="@drawable/home_picture"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:visibility="gone"
android:id="@+id/iv_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bg_selected"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/iv_image" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="60dp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_back"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/iv_return"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -3,10 +3,12 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="50dp">
android:id="@+id/cl_include"
android:layout_height="60dp">
<androidx.appcompat.widget.AppCompatImageView
android:visibility="visible"
android:id="@+id/iv_back"
android:padding="10dp"
android:layout_width="wrap_content"
......@@ -17,6 +19,29 @@
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:visibility="gone"
android:id="@+id/image_select_all"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bg_select_all"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:visibility="gone"
android:id="@+id/tv_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_all"
android:textColor="#ff666666"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/image_select_all"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
......
......@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="50dp">
android:layout_height="60dp">
......
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
\ No newline at end of file
......@@ -6,4 +6,11 @@
<string name="tv_view">View</string>
<string name="tv_tool">Tool</string>
<string name="tv_picture">Picture</string>
<string name="tv_set">Set</string>
<string name="tv_delete">Delete</string>
<string name="tv_recovery">Recovery</string>
<string name="tv_all">All</string>
<string name="select_project">Select Project</string>
<string name="tv_share">Share</string>
<string name="file_not_found">File not found</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