Skip to content

Commit c411626

Browse files
多文件选择优化
1 parent 6f5356b commit c411626

8 files changed

Lines changed: 27 additions & 21 deletions

File tree

app/src/main/java/pizzk/media/picker/demo/MainActivity.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ class MainActivity : AppCompatActivity() {
2222
PickControl.authority(getString(R.string.file_provider))
2323
//多张选择示例
2424
val photoGroup: PhotoGroupView = findViewById(R.id.photoGroup)
25-
val size: Int = resources.getDimensionPixelSize(R.dimen.x75)
25+
val size: Int = resources.getDimensionPixelSize(R.dimen.x110)
2626
val tvHint: TextView = findViewById(R.id.tvHint)
27-
val lp: ViewGroup.LayoutParams = ViewGroup.LayoutParams(size, size)
28-
val special: PhotoGroupView.Special = PhotoGroupView.Special(this@MainActivity, lp = lp, limit = 4, column = 4)
29-
photoGroup.setup(special, emptyList(), false) {
27+
val lp: ViewGroup.LayoutParams = ViewGroup.LayoutParams(size, ViewGroup.LayoutParams.WRAP_CONTENT)
28+
val special: PhotoGroupView.Special = PhotoGroupView.Special(this@MainActivity, lp = lp, limit = 20, column = 4)
29+
photoGroup.setup(special, emptyList(), readOnly = false, appendText = "添加文件") {
3030
tvHint.text = "(${it.selectCount()}/${special.limit})"
3131
}
3232
//单张选择示例

app/src/main/res/layout/activity_main.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
android:id="@+id/tvTitleMulti"
1212
android:layout_width="wrap_content"
1313
android:layout_height="wrap_content"
14-
android:layout_marginBottom="@dimen/pick_media_activity_margin"
1514
android:layout_marginLeft="@dimen/pick_media_activity_margin"
1615
android:layout_marginTop="90dp"
16+
android:layout_marginBottom="@dimen/pick_media_activity_margin"
1717
android:text="@string/pick_demo_show"
1818
android:textColor="@color/pick_chose_text_color"
1919
android:textSize="18sp"/>
@@ -34,19 +34,19 @@
3434
android:layout_height="wrap_content"
3535
android:layout_below="@+id/tvTitleMulti"
3636
android:background="#00ffffff"
37-
android:paddingBottom="@dimen/pick_media_activity_margin"
3837
android:paddingLeft="@dimen/pick_media_activity_margin"
38+
android:paddingTop="@dimen/pick_media_activity_margin"
3939
android:paddingRight="@dimen/pick_media_activity_margin"
40-
android:paddingTop="@dimen/pick_media_activity_margin"/>
40+
android:paddingBottom="@dimen/pick_media_activity_margin"/>
4141

4242
<TextView
4343
android:id="@+id/tvTitleSingle"
4444
android:layout_width="wrap_content"
4545
android:layout_height="wrap_content"
4646
android:layout_below="@+id/photoGroup"
47-
android:layout_marginBottom="@dimen/pick_media_activity_margin"
4847
android:layout_marginLeft="@dimen/pick_media_activity_margin"
4948
android:layout_marginTop="25dp"
49+
android:layout_marginBottom="@dimen/pick_media_activity_margin"
5050
android:text="@string/pick_sigle_photo"
5151
android:textColor="@color/pick_chose_text_color"
5252
android:textSize="18sp"/>

app/src/main/res/values/dimens.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<resources>
33
<dimen name="x75">75dp</dimen>
4+
<dimen name="x110">110dp</dimen>
45
</resources>

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22

33
buildscript {
4-
ext.kotlin_version = '1.2.71'
4+
ext.kotlin_version = '1.3.21'
55
repositories {
66
google()
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.2.1'
10+
classpath 'com.android.tools.build:gradle:3.3.2'
1111
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
1212

1313
// NOTE: Do not place your application dependencies here; they belong

gradle/wrapper/gradle-wrapper.jar

-379 Bytes
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Sun Oct 28 13:51:41 CST 2018
1+
#Mon Mar 25 15:24:11 CST 2019
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

picker/src/main/java/pizzk/media/picker/adapter/PhotoGroupAdapter.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class PhotoGroupAdapter(context: Context, fixedList: List<PhotoItem>?, lp: ViewG
1515
: CommonListAdapter<PhotoItem>(context) {
1616
private var readOnly: Boolean = false
1717
val isAppend: Boolean
18+
private var appendText: String = ""
1819
private val lp: ViewGroup.LayoutParams
1920
private var changeBlock: (PhotoGroupAdapter) -> Unit = { _ -> }
2021

@@ -37,6 +38,10 @@ class PhotoGroupAdapter(context: Context, fixedList: List<PhotoItem>?, lp: ViewG
3738

3839
fun isReadOnly() = readOnly
3940

41+
fun setAppendText(text: String) {
42+
appendText = text
43+
}
44+
4045
fun setChangeBlock(block: (PhotoGroupAdapter) -> Unit) {
4146
this.changeBlock = block
4247
}
@@ -107,15 +112,11 @@ class PhotoGroupAdapter(context: Context, fixedList: List<PhotoItem>?, lp: ViewG
107112
holder.itemView.layoutParams = lp
108113
val el: PhotoItem = getList()[position]
109114
if (isAppend) {
110-
holder.setVisibility(R.id.tvHint, View.GONE)
111-
holder.setText(R.id.tvHint, "")
115+
val isLast: Boolean = el.path.isEmpty() && position == getList().size - 1
116+
holder.setText(R.id.tvHint, if (isLast) appendText else "")
112117
} else {
113-
if (null == el.desc) {
114-
holder.setVisibility(R.id.tvHint, View.GONE)
115-
} else {
116-
holder.setVisibility(R.id.tvHint, View.VISIBLE)
117-
holder.setText(R.id.tvHint, el.desc)
118-
}
118+
val hintText: String = el.desc ?: ""
119+
holder.setText(R.id.tvHint, hintText)
119120
}
120121
if (el.path.isEmpty()) {
121122
holder.setVisibility(R.id.imgHint, View.VISIBLE)

picker/src/main/java/pizzk/media/picker/widget/PhotoGroupView.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ class PhotoGroupView : RecyclerView {
3636
context.getString(R.string.pick_chose_album)
3737
)
3838

39-
fun setup(special: Special, exists: List<String>? = null, readOnly: Boolean,
39+
fun setup(special: Special,
40+
exists: List<String>? = null,
41+
readOnly: Boolean,
42+
appendText: String = "",
4043
changed: (PhotoGroupAdapter) -> Unit = {}) {
4144
val manager = object : GridLayoutManager(context, special.column) {
4245
override fun isAutoMeasureEnabled(): Boolean = true
@@ -45,6 +48,7 @@ class PhotoGroupView : RecyclerView {
4548
val pAdapter = PhotoGroupAdapter(context, special.fixed, special.lp)
4649
pAdapter.setReadOnly(readOnly)
4750
pAdapter.setChangeBlock(changed)
51+
pAdapter.setAppendText(appendText)
4852
if (!pAdapter.update(exists, special.limit)) {
4953
changed(pAdapter)
5054
}

0 commit comments

Comments
 (0)