Skip to content

Commit b35186b

Browse files
author
fengpeng
committed
code simply
1 parent b98920f commit b35186b

9 files changed

Lines changed: 45 additions & 45 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="pizzk.media.picker.demo">
3+
package="pizzk.media.picker.demo">
44

55
<application
66
android:name=".MainApplication"
7-
android:allowBackup="true"
7+
android:allowBackup="false"
88
android:icon="@mipmap/ic_launcher"
99
android:label="@string/app_name"
1010
android:supportsRtl="true"
@@ -17,14 +17,14 @@
1717
android:grantUriPermissions="true">
1818
<meta-data
1919
android:name="android.support.FILE_PROVIDER_PATHS"
20-
android:resource="@xml/file_paths"/>
20+
android:resource="@xml/file_paths" />
2121
</provider>
2222

2323
<activity android:name=".MainActivity">
2424
<intent-filter>
25-
<action android:name="android.intent.action.MAIN"/>
25+
<action android:name="android.intent.action.MAIN" />
2626

27-
<category android:name="android.intent.category.LAUNCHER"/>
27+
<category android:name="android.intent.category.LAUNCHER" />
2828
</intent-filter>
2929
</activity>
3030
</application>
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<paths>
33
<external-path
4-
name="updater_download"
5-
path="download/"/>
6-
7-
<!--<root-path-->
8-
<!--name="camera_photos"-->
9-
<!--path="" />-->
10-
11-
<external-path
12-
name="camera_photos"
13-
path="DCIM"/>
4+
name="photos"
5+
path="DCIM/" />
146
</paths>

picker/src/main/java/pizzk/media/picker/arch/CropParams.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,19 @@ class CropParams(var uri: Uri? = null,
2727
//获取格式
2828
fun getFormatPlain(): String {
2929
return when (format) {
30-
CropParams.FORMAT_JPEG -> Bitmap.CompressFormat.JPEG.toString()
31-
CropParams.FORMAT_PNG -> Bitmap.CompressFormat.PNG.toString()
32-
CropParams.FORMAT_WEBP -> Bitmap.CompressFormat.WEBP.toString()
30+
FORMAT_JPEG -> Bitmap.CompressFormat.JPEG.toString()
31+
FORMAT_PNG -> Bitmap.CompressFormat.PNG.toString()
32+
FORMAT_WEBP -> Bitmap.CompressFormat.WEBP.toString()
3333
else -> Bitmap.CompressFormat.JPEG.toString()
3434
}
3535
}
3636

3737
//获取后缀
3838
fun getFormatExt(): String {
3939
return when (format) {
40-
CropParams.FORMAT_JPEG -> MimeType.JPEG.extensions[0]
41-
CropParams.FORMAT_PNG -> MimeType.PNG.extensions[0]
42-
CropParams.FORMAT_WEBP -> MimeType.WEBP.extensions[0]
40+
FORMAT_JPEG -> MimeType.JPEG.extensions[0]
41+
FORMAT_PNG -> MimeType.PNG.extensions[0]
42+
FORMAT_WEBP -> MimeType.WEBP.extensions[0]
4343
else -> MimeType.JPEG.extensions[0]
4444
}
4545
}

picker/src/main/java/pizzk/media/picker/arch/PickControl.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import java.io.File
1313
*/
1414
class PickControl private constructor() {
1515
companion object {
16+
const val TAG = "PickControl"
1617
const val ACTION_NONE: Int = -1
1718
const val ACTION_PREVIEW: Int = 0
1819
const val ACTION_ALBUM: Int = 1
@@ -47,13 +48,15 @@ class PickControl private constructor() {
4748
private var filter: (Uri?, String) -> Boolean = dFilter
4849
private var limit: Int = 1
4950
private var callback: (action: Int, List<Uri>) -> Unit = dCallback
51+
5052
//裁剪
5153
private var crop: CropParams? = null
5254
private var cropFile: File? = null
5355

5456
//选中数据
5557
private var selects: List<String> = emptyList()
5658
private var index: Int = 0
59+
5760
//拍照
5861
private var cameraFile: File? = null
5962

picker/src/main/java/pizzk/media/picker/entity/PhotoItem.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,4 @@ data class PhotoItem(
3636
return arrayOfNulls(size)
3737
}
3838
}
39-
4039
}

picker/src/main/java/pizzk/media/picker/utils/FileUtils.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package pizzk.media.picker.utils
33
import android.app.Application
44
import android.os.Environment
55
import android.util.Log
6+
import pizzk.media.picker.arch.PickControl
67
import java.io.File
78
import java.text.SimpleDateFormat
89
import java.util.*
@@ -15,13 +16,11 @@ object FileUtils {
1516
if (Environment.getExternalStorageState() != Environment.MEDIA_MOUNTED) {
1617
return null
1718
}
18-
val child = "${Environment.DIRECTORY_DCIM}${File.separator}${application.packageName}"
19-
val path = File(Environment.getExternalStorageDirectory(), child)
20-
if (!path.exists()) {
21-
if (!path.mkdirs()) {
22-
Log.d("FileUtils", "create directory failed that path is ${path.absolutePath}")
23-
return null
24-
}
19+
val parent = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
20+
val path = File(parent, application.packageName)
21+
if (!path.exists() && !path.mkdirs()) {
22+
Log.d(PickControl.TAG, "create directory failed that path is ${path.absolutePath}")
23+
return null
2524
}
2625
val fileName = "$prefix${sdf.format(Date())}.$ext"
2726
return File(path, fileName)

picker/src/main/java/pizzk/media/picker/utils/PickUtils.kt

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package pizzk.media.picker.utils
22

33
import android.Manifest
4+
import android.annotation.SuppressLint
45
import android.app.Activity
56
import android.content.ContentResolver
67
import android.content.ContentValues
@@ -98,7 +99,7 @@ object PickUtils {
9899
* 启动相册
99100
*/
100101
fun launchAlbum(activity: AppCompatActivity) {
101-
val access: Boolean = checkPermission(activity, externalPermission, PickUtils.REQUEST_CODE_ALBUM)
102+
val access: Boolean = checkPermission(activity, externalPermission, REQUEST_CODE_ALBUM)
102103
if (!access) return
103104
val picker: PickControl = PickControl.obtain(false)
104105
val uris: List<Uri> = picker.selects().mapNotNull(PickUtils::path2Uri)
@@ -113,7 +114,7 @@ object PickUtils {
113114
*/
114115
fun launchCamera(activity: AppCompatActivity): Uri? {
115116
//权限确认
116-
val access: Boolean = PickUtils.checkPermission(activity, cameraPermission, PickUtils.REQUEST_CODE_CAMERA)
117+
val access: Boolean = checkPermission(activity, cameraPermission, REQUEST_CODE_CAMERA)
117118
if (!access) return null
118119
//创建文件
119120
val optionalFile: File? = FileUtils.createPhoto(activity.application, MimeType.JPEG.extensions[0])
@@ -129,7 +130,7 @@ object PickUtils {
129130
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
130131
val uri: Uri = FileProvider.getUriForFile(activity, PickControl.authority(), file)
131132
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri)
132-
activity.startActivityForResult(intent, PickUtils.REQUEST_CODE_CAMERA)
133+
activity.startActivityForResult(intent, REQUEST_CODE_CAMERA)
133134
PickControl.obtain(false).cameraFile(file)
134135
return uri
135136
}
@@ -164,7 +165,7 @@ object PickUtils {
164165
}
165166
val srcUri: Uri = uri ?: return null
166167
//检查裁切图像存储权限
167-
val access: Boolean = checkPermission(activity, externalPermission, PickUtils.REQUEST_CODE_CROP)
168+
val access: Boolean = checkPermission(activity, externalPermission, REQUEST_CODE_CROP)
168169
if (!access) return null
169170
//创建文件
170171
val optionalFile: File? = FileUtils.createPhoto(activity.application, params.getFormatExt(), "crop")
@@ -200,7 +201,7 @@ object PickUtils {
200201
val packageName: String = info.activityInfo.packageName
201202
activity.grantUriPermission(packageName, destUri, grantFlag)
202203
}
203-
activity.startActivityForResult(intent, PickUtils.REQUEST_CODE_CROP)
204+
activity.startActivityForResult(intent, REQUEST_CODE_CROP)
204205
PickControl.obtain(false).cropFile(file)
205206
return destUri
206207
}
@@ -219,8 +220,10 @@ object PickUtils {
219220
MediaStore.Images.Media.BUCKET_DISPLAY_NAME
220221
)
221222
val sortOrder = "${MediaStore.Images.Media.DATE_TAKEN} DESC"
222-
val cursor: Cursor = resolver.query(uri, projection, null, null, sortOrder)
223+
var cursor: Cursor? = null
223224
try {
225+
cursor = resolver.query(uri, projection, null, null, sortOrder)
226+
cursor ?: return emptyList()
224227
val items: MutableList<AlbumItem> = ArrayList(cursor.count)
225228
for (i: Int in 0 until cursor.count) {
226229
if (!cursor.moveToPosition(i)) break
@@ -240,9 +243,7 @@ object PickUtils {
240243
} catch (e: Exception) {
241244
e.printStackTrace()
242245
} finally {
243-
if (!cursor.isClosed) {
244-
cursor.close()
245-
}
246+
cursor?.close()
246247
}
247248
return sections
248249
}
@@ -255,7 +256,8 @@ object PickUtils {
255256
val mime: String = getImageMime(context, file.absolutePath)
256257
values.put(MediaStore.Images.Media.DATA, file.absolutePath)
257258
values.put(MediaStore.Images.Media.MIME_TYPE, mime)
258-
val uri: Uri = context.contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values)
259+
val uri: Uri? = context.contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values)
260+
uri ?: return fileUri
259261
context.sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, fileUri))
260262
uri
261263
} catch (e: Exception) {
@@ -301,6 +303,7 @@ object PickUtils {
301303
}
302304
}
303305

306+
@SuppressLint("Recycle")
304307
fun filePath(context: Context?, path: String): String {
305308
context ?: return ""
306309
val prefix: Array<String> = arrayOf("content://", "file://")
@@ -316,7 +319,7 @@ object PickUtils {
316319
val uri: Uri = Uri.parse(path)
317320
val projection: Array<String> = arrayOf(MediaStore.MediaColumns.DATA)
318321
val resolver: ContentResolver = context.applicationContext.contentResolver
319-
cursor = resolver.query(uri, projection, null, null, null)
322+
cursor = resolver.query(uri, projection, null, null, null) ?: return ""
320323
if (cursor.moveToFirst()) cursor.getString(0) else ""
321324
} catch (e: Exception) {
322325
e.printStackTrace()

picker/src/main/java/pizzk/media/picker/view/PickActionMenu.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import android.view.MenuItem
66
/**
77
* 标题菜单按钮
88
*/
9-
class PickActionMenu(val toolbar: Toolbar, block: () -> Unit) {
9+
class PickActionMenu(toolbar: Toolbar, block: () -> Unit) {
1010

1111
private val menu: MenuItem = toolbar.menu.add("")
1212

picker/src/main/java/pizzk/media/picker/view/PreviewActivity.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,20 @@ class PreviewActivity : AppCompatActivity() {
5252
private lateinit var llSelect: LinearLayout
5353
private lateinit var checkBox: ImageView
5454
private lateinit var doneButton: PickActionMenu
55+
5556
//动画
5657
private val hideOverlayAnim: AlphaAnimation = AlphaAnimation(1f, 0f)
5758
private val showOverlayAnim: AlphaAnimation = AlphaAnimation(0f, 1f)
59+
5860
//适配器
5961
private lateinit var photoAdapter: PreviewPhotoAdapter
6062
private lateinit var selectAdapter: PreviewSelectAdapter
63+
6164
//标志
6265
private var currentIndex: Int = 0
6366
private var selectLimit: Int = 0
6467
private var finishFlag: Boolean = false
68+
6569
//可见性
6670
private var overlayFlag: Boolean = true
6771

@@ -74,9 +78,9 @@ class PreviewActivity : AppCompatActivity() {
7478

7579
//设置适配器
7680
private fun setupAdapter() {
77-
val photos: List<String> = intent.getStringArrayListExtra(PreviewActivity.KEY_DATA)
81+
val photos: List<String> = intent.getStringArrayListExtra(KEY_DATA)
7882
//预览相关
79-
currentIndex = intent.getIntExtra(PreviewActivity.KEY_INDEX, currentIndex)
83+
currentIndex = intent.getIntExtra(KEY_INDEX, currentIndex)
8084
photoAdapter = PreviewPhotoAdapter(baseContext, photos)
8185
photoAdapter.setClickListener { switchOverlayVisibility() }
8286
photoAdapter.setScaleBlock {
@@ -85,8 +89,8 @@ class PreviewActivity : AppCompatActivity() {
8589
}
8690
}
8791
//选择相关
88-
selectLimit = intent.getIntExtra(PreviewActivity.KEY_SELECT_LIMIT, selectLimit)
89-
val selects: List<String> = intent.getStringArrayListExtra(PreviewActivity.KEY_SELECT_DATA)
92+
selectLimit = intent.getIntExtra(KEY_SELECT_LIMIT, selectLimit)
93+
val selects: List<String> = intent.getStringArrayListExtra(KEY_SELECT_DATA)
9094
selectAdapter = PreviewSelectAdapter(baseContext, selects)
9195
selectAdapter.setClickListener { path ->
9296
val targetPath: String? = photoAdapter.getList().findLast { it == path }

0 commit comments

Comments
 (0)