Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
SuperEasyClean
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
songjianyu
SuperEasyClean
Commits
45e22624
Commit
45e22624
authored
Jun 04, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[新增]相识图片
parent
97113490
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
690 additions
and
14 deletions
+690
-14
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+5
-0
data.json
app/src/main/assets/similar_photos/scan/data.json
+1
-0
img_0.png
app/src/main/assets/similar_photos/scan/images/img_0.png
+0
-0
img_1.png
app/src/main/assets/similar_photos/scan/images/img_1.png
+0
-0
img_2.png
app/src/main/assets/similar_photos/scan/images/img_2.png
+0
-0
img_3.png
app/src/main/assets/similar_photos/scan/images/img_3.png
+0
-0
BaseActivity.kt
app/src/main/java/com/base/appzxhy/base/BaseActivity.kt
+11
-4
SimilarBean.kt
app/src/main/java/com/base/appzxhy/bean/SimilarBean.kt
+10
-0
BatteryInfoActivity.kt
...va/com/base/appzxhy/ui/batteryinfo/BatteryInfoActivity.kt
+2
-2
JunkCleanActivity.kt
.../main/java/com/base/appzxhy/ui/clean/JunkCleanActivity.kt
+2
-3
LargeFileCleanActivity.kt
...a/com/base/appzxhy/ui/largefile/LargeFileCleanActivity.kt
+2
-2
ScreenshotCleanActivity.kt
...com/base/appzxhy/ui/screenshot/ScreenshotCleanActivity.kt
+3
-3
SimilarPhotosActivity.kt
...java/com/base/appzxhy/ui/similar/SimilarPhotosActivity.kt
+279
-0
SimilarUtils.kt
...src/main/java/com/base/appzxhy/ui/similar/SimilarUtils.kt
+138
-0
icon.png
app/src/main/res/drawable-xxhdpi/icon.png
+0
-0
icon_n.png
app/src/main/res/drawable-xxhdpi/icon_n.png
+0
-0
activity_similar_photos.xml
app/src/main/res/layout/activity_similar_photos.xml
+128
-0
item_similar_photos.xml
app/src/main/res/layout/item_similar_photos.xml
+81
-0
item_similar_photos_child.xml
app/src/main/res/layout/item_similar_photos_child.xml
+26
-0
strings.xml
app/src/main/res/values/strings.xml
+2
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
45e22624
...
...
@@ -78,6 +78,11 @@
android:exported=
"false"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".ui.similar.SimilarPhotosActivity"
android:exported=
"false"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<provider
android:name=
"androidx.core.content.FileProvider"
...
...
app/src/main/assets/similar_photos/scan/data.json
0 → 100644
View file @
45e22624
{
"v"
:
"5.6.3"
,
"fr"
:
25
,
"ip"
:
0
,
"op"
:
36
,
"w"
:
870
,
"h"
:
870
,
"nm"
:
"1-扫描动画"
,
"ddd"
:
0
,
"assets"
:[{
"id"
:
"image_0"
,
"w"
:
120
,
"h"
:
120
,
"u"
:
"images/"
,
"p"
:
"img_0.png"
,
"e"
:
0
},{
"id"
:
"image_1"
,
"w"
:
198
,
"h"
:
198
,
"u"
:
"images/"
,
"p"
:
"img_1.png"
,
"e"
:
0
},{
"id"
:
"image_2"
,
"w"
:
678
,
"h"
:
678
,
"u"
:
"images/"
,
"p"
:
"img_2.png"
,
"e"
:
0
},{
"id"
:
"image_3"
,
"w"
:
678
,
"h"
:
678
,
"u"
:
"images/"
,
"p"
:
"img_3.png"
,
"e"
:
0
}],
"layers"
:[{
"ddd"
:
0
,
"ind"
:
1
,
"ty"
:
4
,
"nm"
:
"小飞圆"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:[
0.833
],
"y"
:[
0.833
]},
"o"
:{
"x"
:[
0.167
],
"y"
:[
0.167
]},
"t"
:
20
,
"s"
:[
60
],
"e"
:[
0
]},{
"t"
:
40
}],
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:
0.833
,
"y"
:
0.833
},
"o"
:{
"x"
:
0.167
,
"y"
:
0.167
},
"t"
:
20
,
"s"
:[
141
,
893
,
0
],
"e"
:[
437
,
429
,
0
],
"to"
:[
0
,
0
,
0
],
"ti"
:[
0
,
0
,
0
]},{
"t"
:
35
}],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"shapes"
:[{
"ty"
:
"gr"
,
"it"
:[{
"d"
:
1
,
"ty"
:
"el"
,
"s"
:{
"a"
:
0
,
"k"
:[
16
,
16
],
"ix"
:
2
},
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
3
},
"nm"
:
"椭圆路径 1"
,
"mn"
:
"ADBE Vector Shape - Ellipse"
,
"hd"
:
false
},{
"ty"
:
"fl"
,
"c"
:{
"a"
:
0
,
"k"
:[
1
,
1
,
1
,
1
],
"ix"
:
4
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
5
},
"r"
:
1
,
"bm"
:
0
,
"nm"
:
"填充 1"
,
"mn"
:
"ADBE Vector Graphic - Fill"
,
"hd"
:
false
},{
"ty"
:
"tr"
,
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
300
,
300
],
"ix"
:
3
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
6
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
7
},
"sk"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
4
},
"sa"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
5
},
"nm"
:
"变换"
}],
"nm"
:
"小飞圆"
,
"np"
:
2
,
"cix"
:
2
,
"bm"
:
0
,
"ix"
:
1
,
"mn"
:
"ADBE Vector Group"
,
"hd"
:
false
}],
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
2
,
"ty"
:
4
,
"nm"
:
"小飞圆"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:[
0.8
],
"y"
:[
1
]},
"o"
:{
"x"
:[
0.2
],
"y"
:[
0
]},
"t"
:
5
,
"s"
:[
60
],
"e"
:[
0
]},{
"t"
:
25
}],
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:
0.8
,
"y"
:
1
},
"o"
:{
"x"
:
0.2
,
"y"
:
0
},
"t"
:
5
,
"s"
:[
892
,
226
,
0
],
"e"
:[
462
,
460
,
0
],
"to"
:[
0
,
0
,
0
],
"ti"
:[
0
,
0
,
0
]},{
"t"
:
20
}],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"shapes"
:[{
"ty"
:
"gr"
,
"it"
:[{
"d"
:
1
,
"ty"
:
"el"
,
"s"
:{
"a"
:
0
,
"k"
:[
16
,
16
],
"ix"
:
2
},
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
3
},
"nm"
:
"椭圆路径 1"
,
"mn"
:
"ADBE Vector Shape - Ellipse"
,
"hd"
:
false
},{
"ty"
:
"fl"
,
"c"
:{
"a"
:
0
,
"k"
:[
1
,
1
,
1
,
1
],
"ix"
:
4
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
5
},
"r"
:
1
,
"bm"
:
0
,
"nm"
:
"填充 1"
,
"mn"
:
"ADBE Vector Graphic - Fill"
,
"hd"
:
false
},{
"ty"
:
"tr"
,
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
300
,
300
],
"ix"
:
3
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
6
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
7
},
"sk"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
4
},
"sa"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
5
},
"nm"
:
"变换"
}],
"nm"
:
"小飞圆"
,
"np"
:
2
,
"cix"
:
2
,
"bm"
:
0
,
"ix"
:
1
,
"mn"
:
"ADBE Vector Group"
,
"hd"
:
false
}],
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
3
,
"ty"
:
4
,
"nm"
:
"小飞圆"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:[
0.8
],
"y"
:[
1
]},
"o"
:{
"x"
:[
0.2
],
"y"
:[
0
]},
"t"
:
5
,
"s"
:[
60
],
"e"
:[
0
]},{
"t"
:
25
}],
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:
0.8
,
"y"
:
1
},
"o"
:{
"x"
:
0.2
,
"y"
:
0
},
"t"
:
5
,
"s"
:[
-81
,
761
,
0
],
"e"
:[
431
,
435
,
0
],
"to"
:[
0
,
0
,
0
],
"ti"
:[
0
,
0
,
0
]},{
"t"
:
30
}],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"shapes"
:[{
"ty"
:
"gr"
,
"it"
:[{
"d"
:
1
,
"ty"
:
"el"
,
"s"
:{
"a"
:
0
,
"k"
:[
22
,
22
],
"ix"
:
2
},
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
3
},
"nm"
:
"椭圆路径 1"
,
"mn"
:
"ADBE Vector Shape - Ellipse"
,
"hd"
:
false
},{
"ty"
:
"fl"
,
"c"
:{
"a"
:
0
,
"k"
:[
1
,
1
,
1
,
1
],
"ix"
:
4
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
5
},
"r"
:
1
,
"bm"
:
0
,
"nm"
:
"填充 1"
,
"mn"
:
"ADBE Vector Graphic - Fill"
,
"hd"
:
false
},{
"ty"
:
"tr"
,
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
300
,
300
],
"ix"
:
3
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
6
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
7
},
"sk"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
4
},
"sa"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
5
},
"nm"
:
"变换"
}],
"nm"
:
"小飞圆"
,
"np"
:
2
,
"cix"
:
2
,
"bm"
:
0
,
"ix"
:
1
,
"mn"
:
"ADBE Vector Group"
,
"hd"
:
false
}],
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
4
,
"ty"
:
4
,
"nm"
:
"小飞圆"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:[
0.8
],
"y"
:[
1
]},
"o"
:{
"x"
:[
0.2
],
"y"
:[
0
]},
"t"
:
10
,
"s"
:[
60
],
"e"
:[
0
]},{
"t"
:
30
}],
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:
0.8
,
"y"
:
1
},
"o"
:{
"x"
:
0.2
,
"y"
:
0
},
"t"
:
10
,
"s"
:[
574
,
-48
,
0
],
"e"
:[
434
,
408
,
0
],
"to"
:[
0
,
0
,
0
],
"ti"
:[
0
,
0
,
0
]},{
"t"
:
30
}],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"shapes"
:[{
"ty"
:
"gr"
,
"it"
:[{
"d"
:
1
,
"ty"
:
"el"
,
"s"
:{
"a"
:
0
,
"k"
:[
20
,
20
],
"ix"
:
2
},
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
3
},
"nm"
:
"椭圆路径 1"
,
"mn"
:
"ADBE Vector Shape - Ellipse"
,
"hd"
:
false
},{
"ty"
:
"fl"
,
"c"
:{
"a"
:
0
,
"k"
:[
1
,
1
,
1
,
1
],
"ix"
:
4
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
5
},
"r"
:
1
,
"bm"
:
0
,
"nm"
:
"填充 1"
,
"mn"
:
"ADBE Vector Graphic - Fill"
,
"hd"
:
false
},{
"ty"
:
"tr"
,
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
300
,
300
],
"ix"
:
3
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
6
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
7
},
"sk"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
4
},
"sa"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
5
},
"nm"
:
"变换"
}],
"nm"
:
"小飞圆"
,
"np"
:
2
,
"cix"
:
2
,
"bm"
:
0
,
"ix"
:
1
,
"mn"
:
"ADBE Vector Group"
,
"hd"
:
false
}],
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
5
,
"ty"
:
4
,
"nm"
:
"小飞圆"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:[
0.8
],
"y"
:[
1
]},
"o"
:{
"x"
:[
0.2
],
"y"
:[
0
]},
"t"
:
0
,
"s"
:[
60
],
"e"
:[
0
]},{
"t"
:
20
}],
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:
0.8
,
"y"
:
1
},
"o"
:{
"x"
:
0.2
,
"y"
:
0
},
"t"
:
0
,
"s"
:[
-48
,
-40
,
0
],
"e"
:[
444
,
444
,
0
],
"to"
:[
0
,
0
,
0
],
"ti"
:[
0
,
0
,
0
]},{
"t"
:
18
}],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"shapes"
:[{
"ty"
:
"gr"
,
"it"
:[{
"d"
:
1
,
"ty"
:
"el"
,
"s"
:{
"a"
:
0
,
"k"
:[
36
,
36
],
"ix"
:
2
},
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
3
},
"nm"
:
"椭圆路径 1"
,
"mn"
:
"ADBE Vector Shape - Ellipse"
,
"hd"
:
false
},{
"ty"
:
"fl"
,
"c"
:{
"a"
:
0
,
"k"
:[
1
,
1
,
1
,
1
],
"ix"
:
4
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
5
},
"r"
:
1
,
"bm"
:
0
,
"nm"
:
"填充 1"
,
"mn"
:
"ADBE Vector Graphic - Fill"
,
"hd"
:
false
},{
"ty"
:
"tr"
,
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
300
,
300
],
"ix"
:
3
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
6
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
7
},
"sk"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
4
},
"sa"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
5
},
"nm"
:
"变换"
}],
"nm"
:
"小飞圆"
,
"np"
:
2
,
"cix"
:
2
,
"bm"
:
0
,
"ix"
:
1
,
"mn"
:
"ADBE Vector Group"
,
"hd"
:
false
}],
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
6
,
"ty"
:
4
,
"nm"
:
"小飞圆"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:[
0.833
],
"y"
:[
0.833
]},
"o"
:{
"x"
:[
0.2
],
"y"
:[
0
]},
"t"
:
16
,
"s"
:[
60
],
"e"
:[
0
]},{
"t"
:
36
}],
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:
0.8
,
"y"
:
1
},
"o"
:{
"x"
:
0.2
,
"y"
:
0
},
"t"
:
16
,
"s"
:[
1018
,
824
,
0
],
"e"
:[
446
,
462
,
0
],
"to"
:[
0
,
0
,
0
],
"ti"
:[
0
,
0
,
0
]},{
"t"
:
31
}],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"shapes"
:[{
"ty"
:
"gr"
,
"it"
:[{
"d"
:
1
,
"ty"
:
"el"
,
"s"
:{
"a"
:
0
,
"k"
:[
26
,
26
],
"ix"
:
2
},
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
3
},
"nm"
:
"椭圆路径 1"
,
"mn"
:
"ADBE Vector Shape - Ellipse"
,
"hd"
:
false
},{
"ty"
:
"fl"
,
"c"
:{
"a"
:
0
,
"k"
:[
1
,
1
,
1
,
1
],
"ix"
:
4
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
5
},
"r"
:
1
,
"bm"
:
0
,
"nm"
:
"填充 1"
,
"mn"
:
"ADBE Vector Graphic - Fill"
,
"hd"
:
false
},{
"ty"
:
"tr"
,
"p"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
0
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
300
,
300
],
"ix"
:
3
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
6
},
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
7
},
"sk"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
4
},
"sa"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
5
},
"nm"
:
"变换"
}],
"nm"
:
"小飞圆"
,
"np"
:
2
,
"cix"
:
2
,
"bm"
:
0
,
"ix"
:
1
,
"mn"
:
"ADBE Vector Group"
,
"hd"
:
false
}],
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
7
,
"ty"
:
2
,
"nm"
:
"icon_clean_home"
,
"refId"
:
"image_0"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
0
,
"k"
:[
435
,
435
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
60
,
60
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
8
,
"ty"
:
2
,
"nm"
:
"小圆"
,
"refId"
:
"image_1"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
0
,
"k"
:[
435
,
435
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
99
,
99
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
9
,
"ty"
:
2
,
"nm"
:
"转圈园"
,
"refId"
:
"image_2"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
11
},
"r"
:{
"a"
:
1
,
"k"
:[{
"i"
:{
"x"
:[
0.833
],
"y"
:[
0.833
]},
"o"
:{
"x"
:[
0.167
],
"y"
:[
0.167
]},
"t"
:
0
,
"s"
:[
0
],
"e"
:[
360
]},{
"t"
:
35
}],
"ix"
:
10
},
"p"
:{
"a"
:
0
,
"k"
:[
435
,
435
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
339
,
339
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
},{
"ddd"
:
0
,
"ind"
:
10
,
"ty"
:
2
,
"nm"
:
"背景圆"
,
"refId"
:
"image_3"
,
"sr"
:
1
,
"ks"
:{
"o"
:{
"a"
:
0
,
"k"
:
100
,
"ix"
:
11
},
"r"
:{
"a"
:
0
,
"k"
:
0
,
"ix"
:
10
},
"p"
:{
"a"
:
0
,
"k"
:[
435
,
435
,
0
],
"ix"
:
2
},
"a"
:{
"a"
:
0
,
"k"
:[
339
,
339
,
0
],
"ix"
:
1
},
"s"
:{
"a"
:
0
,
"k"
:[
100
,
100
,
100
],
"ix"
:
6
}},
"ao"
:
0
,
"ip"
:
0
,
"op"
:
75
,
"st"
:
0
,
"bm"
:
0
}],
"markers"
:[]}
\ No newline at end of file
app/src/main/assets/similar_photos/scan/images/img_0.png
0 → 100644
View file @
45e22624
5.64 KB
app/src/main/assets/similar_photos/scan/images/img_1.png
0 → 100644
View file @
45e22624
2.75 KB
app/src/main/assets/similar_photos/scan/images/img_2.png
0 → 100644
View file @
45e22624
84 KB
app/src/main/assets/similar_photos/scan/images/img_3.png
0 → 100644
View file @
45e22624
39 KB
app/src/main/java/com/base/appzxhy/base/BaseActivity.kt
View file @
45e22624
...
...
@@ -33,6 +33,7 @@ import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import
com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.LARGE_FILE_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import
com.base.appzxhy.bean.FileBean
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.business.ads.AdsShowCallBack
...
...
@@ -43,6 +44,7 @@ import com.base.appzxhy.ui.clean.JunkCleanActivity
import
com.base.appzxhy.ui.largefile.LargeFileCleanActivity
import
com.base.appzxhy.ui.main.MainActivity
import
com.base.appzxhy.ui.screenshot.ScreenshotCleanActivity
import
com.base.appzxhy.ui.similar.SimilarPhotosActivity
import
com.base.appzxhy.utils.ActivityLauncher
import
com.base.appzxhy.utils.ActivityManagerUtils
import
com.base.appzxhy.utils.FileUtils
...
...
@@ -279,7 +281,7 @@ abstract class BaseActivity<VB : ViewBinding>(
@SuppressLint
(
"SetTextI18n"
)
open
fun
showAdAnimation
(
lottieConfig
:
Lottie
Config
,
lottieConfig
:
Lottie
Enum
,
finish
:
(()
->
Unit
)?
=
null
)
{
...
...
@@ -310,7 +312,7 @@ abstract class BaseActivity<VB : ViewBinding>(
when
(
lottieConfig
)
{
Lottie
Config
.
CLEAN_LOTTIE
->
{
Lottie
Enum
.
CLEAN_LOTTIE
->
{
lottie
?.
addAnimatorUpdateListener
{
animation
->
val
value
=
animation
.
animatedValue
as
Float
*
100
tvProgress
?.
text
=
"${value.toInt()}%"
...
...
@@ -377,18 +379,23 @@ fun Activity.jumpAction(key: String) {
goToAc
(
ScreenshotCleanActivity
::
class
.
java
)
}
SIMILAR_PHOTOS
->
{
goToAc
(
SimilarPhotosActivity
::
class
.
java
)
}
}
}
enum
class
Lottie
Config
(
val
data
:
String
,
val
images
:
String
?
=
null
,
val
isLoop
:
Boolean
=
true
)
{
enum
class
Lottie
Enum
(
val
data
:
String
,
val
images
:
String
?
=
null
,
val
isLoop
:
Boolean
=
true
)
{
BATTERY_INFO_LOTTIE
(
"battery_info/scan/data.json"
,
"battery_info/scan/images"
,
true
),
CLEAN_LOTTIE
(
"clean.json"
),
LARGE_FILE_LOTTIE
(
"large_files/scan/data.json"
,
"large_files/scan/images"
),
SCREENSHOT_LOTTIE
(
"screenshot/scan/data.json"
,
"screenshot/scan/images"
),
SIMILAR_PHOTOS_LOTTIE
(
"similar_photos/scan/data.json"
,
"similar_photos/scan/images"
),
// PHOTO_COMPRESSION_LOTTIE("photo_compression/scan/data.json", "photo_compression/scan/images"),
// SIMILAR_PHOTOS("similar_photos/scan/data.json", "similar_photos/scan/images"),
// WHATSAPP("whatsapp/scan/data.json", "whatsapp/scan/images"),
// WEATHER(""),
// CONSTELLATION("")
...
...
app/src/main/java/com/base/appzxhy/bean/SimilarBean.kt
0 → 100644
View file @
45e22624
package
com.base.appzxhy.bean
data class
SimilarBean
(
val
url
:
String
,
val
hashCode
:
String
,
val
avgPixel
:
Int
,
var
size
:
Long
,
var
isSelect
:
Boolean
,
var
items
:
MutableList
<
SimilarBean
>
=
mutableListOf
()
)
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/batteryinfo/BatteryInfoActivity.kt
View file @
45e22624
...
...
@@ -5,7 +5,7 @@ import android.content.IntentFilter
import
androidx.recyclerview.widget.ConcatAdapter
import
com.base.appzxhy.R
import
com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.base.Lottie
Config
import
com.base.appzxhy.base.Lottie
Enum
import
com.base.appzxhy.databinding.ActivityBatteryInfo2Binding
import
com.base.appzxhy.ui.adapter.AdAdapter
import
com.base.appzxhy.utils.Utils
...
...
@@ -34,7 +34,7 @@ class BatteryInfoActivity : BaseActivity<ActivityBatteryInfo2Binding>(ActivityBa
}
override
fun
initView
()
{
showAdAnimation
(
Lottie
Config
.
BATTERY_INFO_LOTTIE
)
{
showAdAnimation
(
Lottie
Enum
.
BATTERY_INFO_LOTTIE
)
{
adAdapter
.
submitList
(
listOf
(
""
))
}
batteryReceiver
=
BatteryReceiver
{
updateBatteryInfo
()
}
...
...
app/src/main/java/com/base/appzxhy/ui/clean/JunkCleanActivity.kt
View file @
45e22624
...
...
@@ -12,8 +12,7 @@ import androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.base.appzxhy.R
import
com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.base.LottieConfig
import
com.base.appzxhy.base.cleanFiles
import
com.base.appzxhy.base.LottieEnum
import
com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import
com.base.appzxhy.bean.FileBean
import
com.base.appzxhy.business.ads.AdsMgr
...
...
@@ -170,7 +169,7 @@ class JunkCleanActivity : BaseActivity<ActivityJunkCleanBinding>(ActivityJunkCle
if
(
isBackDisable
)
return
@setOnClickListener
if
(
total
>
0
)
{
showAdAnimation
(
Lottie
Config
.
CLEAN_LOTTIE
)
{
showAdAnimation
(
Lottie
Enum
.
CLEAN_LOTTIE
)
{
// cleanFiles(selectedFiles)
CleanResultActivity
.
functionKey
=
JUNK_CLEAN
...
...
app/src/main/java/com/base/appzxhy/ui/largefile/LargeFileCleanActivity.kt
View file @
45e22624
...
...
@@ -15,7 +15,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
com.base.appzxhy.R
import
com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.base.Lottie
Config
import
com.base.appzxhy.base.Lottie
Enum
import
com.base.appzxhy.base.cleanFiles
import
com.base.appzxhy.bean.FeatureBean.Companion.LARGE_FILE_CLEAN
import
com.base.appzxhy.bean.FileBean
...
...
@@ -337,7 +337,7 @@ class LargeFileCleanActivity : BaseActivity<ActivityLargeFileCleanBinding>(Activ
binding
.
rvLargeFile
.
adapter
=
adapter
binding
.
rvLargeFile
.
layoutManager
=
LinearLayoutManager
(
this
)
initData
()
showAdAnimation
(
Lottie
Config
.
LARGE_FILE_LOTTIE
)
{
showAdAnimation
(
Lottie
Enum
.
LARGE_FILE_LOTTIE
)
{
AdsMgr
.
showNative
(
binding
.
flAd
,
R
.
layout
.
layout_admob_native_custom
)
}
}
...
...
app/src/main/java/com/base/appzxhy/ui/screenshot/ScreenshotCleanActivity.kt
View file @
45e22624
...
...
@@ -7,12 +7,11 @@ import android.view.ViewGroup
import
android.widget.TextView
import
androidx.core.view.ViewCompat
import
androidx.core.view.WindowInsetsCompat
import
androidx.core.view.setPadding
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.GridLayoutManager
import
com.base.appzxhy.R
import
com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.base.Lottie
Config
import
com.base.appzxhy.base.Lottie
Enum
import
com.base.appzxhy.base.cleanFiles
import
com.base.appzxhy.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import
com.base.appzxhy.bean.FileBean
...
...
@@ -157,7 +156,7 @@ class ScreenshotCleanActivity : BaseActivity<ActivityScreenshotCleanBinding>(Act
binding
.
expandableFiles
.
layoutManager
=
gridLayoutManager
initData
()
showAdAnimation
(
Lottie
Config
.
SCREENSHOT_LOTTIE
)
{
showAdAnimation
(
Lottie
Enum
.
SCREENSHOT_LOTTIE
)
{
AdsMgr
.
showNative
(
binding
.
flAd
,
R
.
layout
.
layout_admob_native_custom
)
}
}
...
...
@@ -181,6 +180,7 @@ class ScreenshotCleanActivity : BaseActivity<ActivityScreenshotCleanBinding>(Act
}
}
@SuppressLint
(
"NotifyDataSetChanged"
)
override
fun
initListener
()
{
super
.
initListener
()
binding
.
ivBack
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
}
...
...
app/src/main/java/com/base/appzxhy/ui/similar/SimilarPhotosActivity.kt
0 → 100644
View file @
45e22624
This diff is collapsed.
Click to expand it.
app/src/main/java/com/base/appzxhy/ui/similar/SimilarUtils.kt
0 → 100644
View file @
45e22624
package
com.base.appzxhy.ui.similar
import
android.graphics.Bitmap
import
android.graphics.BitmapFactory
import
android.graphics.Color
import
android.media.ThumbnailUtils
import
com.base.appzxhy.bean.SimilarBean
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.withContext
import
java.io.File
import
kotlin.math.pow
object
SimilarUtils
{
private
fun
loadBitmapFromFile
(
path
:
String
):
Bitmap
?
{
val
bitmap
=
BitmapFactory
.
decodeFile
(
path
)
if
(
bitmap
.
width
<=
0
||
bitmap
.
height
<=
0
)
{
return
null
}
val
options
=
BitmapFactory
.
Options
()
options
.
inJustDecodeBounds
=
true
BitmapFactory
.
decodeFile
(
path
,
options
)
if
(
options
.
outHeight
==
-
1
||
options
.
outWidth
==
-
1
)
{
return
null
}
var
inSampleSize
=
(
0.5f
+
options
.
outHeight
.
toFloat
()
/
bitmap
.
height
.
toFloat
()).
coerceAtLeast
(
0.5f
+
options
.
outWidth
.
toFloat
()
/
bitmap
.
width
.
toFloat
())
.
toInt
()
inSampleSize
+=
1
options
.
inSampleSize
=
inSampleSize
.
coerceAtLeast
(
1
)
options
.
inJustDecodeBounds
=
false
return
BitmapFactory
.
decodeFile
(
path
,
options
)
}
suspend
fun
createImage
(
path
:
String
):
SimilarBean
?
{
return
withContext
(
Dispatchers
.
IO
)
{
try
{
val
width
=
8
val
height
=
8
val
source
=
loadBitmapFromFile
(
path
)
val
thumb
=
ThumbnailUtils
.
extractThumbnail
(
source
,
width
,
height
)
val
pixels
=
IntArray
(
width
*
height
)
for
(
i
in
0
until
width
)
{
for
(
j
in
0
until
height
)
{
pixels
[
i
*
height
+
j
]
=
rgbToGray
(
thumb
.
getPixel
(
i
,
j
))
}
}
val
avgPixel
=
average
(
pixels
)
val
comps
=
IntArray
(
width
*
height
)
for
(
i
in
comps
.
indices
)
{
if
(
pixels
[
i
]
>=
avgPixel
)
{
comps
[
i
]
=
1
}
else
{
comps
[
i
]
=
0
}
}
val
hashCode
=
StringBuffer
()
var
i
=
0
while
(
i
<
comps
.
size
)
{
val
result
=
comps
[
i
]
*
2.0
.
pow
(
3.0
).
toInt
()
+
(
comps
[
i
+
1
]
*
2.0
.
pow
(
2.0
)
.
toInt
())
+
(
comps
[
i
+
2
]
*
2.0
.
pow
(
1.0
).
toInt
())
+
comps
[
i
+
3
]
hashCode
.
append
(
binaryToHex
(
result
))
i
+=
4
}
recycleBitmap
(
thumb
)
recycleBitmap
(
source
)
return
@withContext
SimilarBean
(
path
,
hashCode
.
toString
(),
avgPixel
,
File
(
path
).
length
(),
false
)
}
catch
(
_
:
Exception
)
{
return
@withContext
null
}
}
}
private
fun
rgbToGray
(
pixels
:
Int
):
Int
{
val
red
=
Color
.
red
(
pixels
)
val
green
=
Color
.
green
(
pixels
)
val
blue
=
Color
.
blue
(
pixels
)
return
(
0.3
*
red
+
0.59
*
green
+
0.11
*
blue
).
toInt
()
}
private
fun
average
(
pixels
:
IntArray
):
Int
{
return
(
pixels
.
sumOf
{
it
}.
toFloat
()
/
pixels
.
size
).
toInt
()
}
private
fun
recycleBitmap
(
thumb
:
Bitmap
?)
{
if
(
thumb
?.
isRecycled
==
false
)
{
thumb
.
recycle
()
}
}
fun
similarCondition
(
first
:
SimilarBean
,
second
:
SimilarBean
):
Boolean
{
return
hammingDistance
(
first
.
hashCode
,
second
.
hashCode
)
<=
6
&&
(
first
.
avgPixel
.
toFloat
()
/
second
.
avgPixel
)
in
0.8
..
1.0
}
private
fun
hammingDistance
(
sourceHashCode
:
String
,
hashCode
:
String
):
Int
{
var
difference
=
0
for
(
i
in
sourceHashCode
.
indices
)
{
if
(
sourceHashCode
[
i
]
!=
hashCode
[
i
])
{
difference
++
}
}
return
difference
}
private
fun
binaryToHex
(
binary
:
Int
)
=
when
(
binary
)
{
0
->
'0'
1
->
'1'
2
->
'2'
3
->
'3'
4
->
'4'
5
->
'5'
6
->
'6'
7
->
'7'
8
->
'8'
9
->
'9'
10
->
'a'
11
->
'b'
12
->
'c'
13
->
'd'
14
->
'e'
15
->
'f'
else
->
' '
}
}
\ No newline at end of file
app/src/main/res/drawable-xxhdpi/icon.png
0 → 100644
View file @
45e22624
2.79 KB
app/src/main/res/drawable-xxhdpi/icon_n.png
0 → 100644
View file @
45e22624
2.7 KB
app/src/main/res/layout/activity_similar_photos.xml
0 → 100644
View file @
45e22624
<?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=
"@color/color_f7fafa"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_top"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/colorPrimary"
app:layout_constraintTop_toTopOf=
"parent"
>
<FrameLayout
android:id=
"@+id/ll_title"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
android:paddingVertical=
"6dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/ivBack"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"@dimen/dp_8"
android:padding=
"@dimen/dp_8"
android:src=
"@drawable/icon_return_w"
/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:text=
"@string/similar_photos"
android:textColor=
"@color/white"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.base.appzxhy.business.ads.NativeParentView
android:id=
"@+id/flAd"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
app:layout_constraintTop_toBottomOf=
"@id/cl_top"
>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:src=
"@drawable/zhanwei1"
tools:ignore=
"ContentDescription"
/>
</com.base.appzxhy.business.ads.NativeParentView>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_select"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"10dp"
android:background=
"@color/white"
android:paddingVertical=
"13dp"
android:paddingStart=
"15dp"
android:paddingEnd=
"24dp"
app:layout_constraintTop_toBottomOf=
"@id/flAd"
>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/auto_select"
android:textColor=
"@color/black"
android:textSize=
"18sp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_select"
android:layout_width=
"@dimen/dp_50"
android:layout_height=
"@dimen/dp_20"
android:src=
"@drawable/icon_n"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_photo"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:scrollbars=
"none"
app:layout_constraintBottom_toTopOf=
"@id/ll_delete"
app:layout_constraintTop_toBottomOf=
"@id/cl_select"
/>
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/ll_delete"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:paddingHorizontal=
"30dp"
android:paddingTop=
"20dp"
android:paddingBottom=
"55dp"
app:layout_constraintBottom_toBottomOf=
"parent"
>
<TextView
android:id=
"@+id/tv_delete"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@drawable/bg_enable_50"
android:gravity=
"center"
android:paddingVertical=
"12dp"
android:text=
"@string/delete"
android:textColor=
"@color/white"
android:textSize=
"18sp"
android:textStyle=
"bold"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
<include
android:id=
"@+id/layout_animation"
layout=
"@layout/layout_animation"
android:visibility=
"gone"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/item_similar_photos.xml
0 → 100644
View file @
45e22624
<?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"
android:layout_marginTop=
"8dp"
>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_occupies"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"7dp"
android:text=
"@string/occupies"
android:textColor=
"@color/color_9b9595"
android:textSize=
"14sp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_size"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"7dp"
android:text=
"0B"
android:textColor=
"@color/color_9b9595"
android:textSize=
"14sp"
app:layout_constraintStart_toEndOf=
"@id/tv_occupies"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"HardcodedText"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_large"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:layout_constraintTop_toBottomOf=
"@id/tv_occupies"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_first_photo"
android:layout_width=
"200dp"
android:layout_height=
"200dp"
android:layout_marginStart=
"15dp"
android:layout_marginTop=
"4dp"
android:src=
"@color/black"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_select"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"10dp"
android:layout_marginEnd=
"8dp"
android:src=
"@drawable/bg_select_yuan"
app:layout_constraintEnd_toEndOf=
"@id/iv_first_photo"
app:layout_constraintTop_toTopOf=
"@id/iv_first_photo"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_large_photo"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"4dp"
android:layout_marginEnd=
"15dp"
android:nestedScrollingEnabled=
"false"
android:scrollbars=
"none"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/iv_first_photo"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_photo"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:nestedScrollingEnabled=
"false"
android:paddingHorizontal=
"15dp"
android:paddingBottom=
"10dp"
android:scrollbars=
"none"
app:layout_constraintTop_toBottomOf=
"@id/cl_large"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/item_similar_photos_child.xml
0 → 100644
View file @
45e22624
<?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"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_photo"
android:layout_width=
"80dp"
android:layout_height=
"73dp"
android:layout_marginTop=
"4dp"
android:src=
"@color/color_9b9595"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_select"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"10dp"
android:layout_marginEnd=
"8dp"
android:src=
"@drawable/bg_select_yuan"
app:layout_constraintEnd_toEndOf=
"@id/iv_photo"
app:layout_constraintTop_toTopOf=
"@id/iv_photo"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
45e22624
...
...
@@ -94,6 +94,8 @@ Please rest assured that we will handle your information in strict accordance wi
<string
name=
"delete_content"
>
Selected files cannot be recovered after deletion. Continue anyway?
</string>
<string
name=
"screenshots_totally"
>
Screenshots totally
</string>
<string
name=
"select_all"
>
Select All
</string>
<string
name=
"auto_select"
>
Auto Select
</string>
<string
name=
"occupies"
>
Occupies
</string>
</resources>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment