Skip to content

Commit

Permalink
add(DevApp): 新增 UriUtils#ofUri 方法
Browse files Browse the repository at this point in the history
add(DevAssist): 新增 DevDataAdapter#onAttachedToRecyclerView 方法初始化处理
add(DevEngine): 补充 availableUri 相关逻辑判断


Former-commit-id: 5c6fef7
  • Loading branch information
afkT committed Sep 13, 2022
1 parent 774dfbc commit bddd0cb
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 7 deletions.
30 changes: 30 additions & 0 deletions lib/DevApp/src/main/java/dev/utils/app/UriUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,36 @@ public static Uri fromFile(final File file) {
return null;
}

/**
* 通过 String 获取 Uri
* @param uriString uri 路径
* @return {@link Uri}
*/
public static Uri ofUri(final String uriString) {
return ofUri(uriString, false);
}

/**
* 通过 String 获取 Uri
* <pre>
* 内部判断 uriString 是 path 还是 uri string
* </pre>
* @param uriString uri 路径
* @param fromFile 是否直接使用 {@link #fromFile} 方法
* @return {@link Uri}
*/
public static Uri ofUri(
final String uriString,
final boolean fromFile
) {
Uri pathUri = getUriForString(uriString);
if (isUri(pathUri)) {
return pathUri;
}
if (fromFile) return fromFile(uriString);
return getUriForPath(uriString);
}

// =======
// = Uri =
// =======
Expand Down
12 changes: 12 additions & 0 deletions lib/DevAssist/src/main/java/dev/adapter/DevDataAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.content.Context;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
Expand Down Expand Up @@ -114,6 +115,17 @@ public int getItemCount() {
return getDataSize();
}

@Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
initialize(recyclerView, true);
}

@Override
public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
super.onDetachedFromRecyclerView(recyclerView);
}

// ================
// = RecyclerView =
// ================
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,12 @@ open class PictureSelectorEngineImpl : IMediaEngine<MediaConfig, MediaData> {
val uri: Uri? = if (original) {
media.getOriginalUri()
} else {
media.getAvailableUri()
val availableUri = media.getAvailableUri()
if (UriUtils.isUriExists(availableUri)) {
availableUri
} else {
media.getOriginalUri()
}
}
uri?.let { lists.add(it) }
}
Expand Down Expand Up @@ -241,12 +246,12 @@ open class PictureSelectorEngineImpl : IMediaEngine<MediaConfig, MediaData> {
// ============

// 资源路径 Uri
media.setOriginalUri(UriUtils.getUriForPath(libData.originalPath))
.setSandboxUri(UriUtils.getUriForPath(libData.sandboxPath))
.setCompressUri(UriUtils.getUriForPath(libData.compressPath))
.setThumbnailUri(UriUtils.getUriForPath(libData.videoThumbnailPath))
.setWatermarkUri(UriUtils.getUriForPath(libData.watermarkPath))
.setCropUri(UriUtils.getUriForPath(libData.cutPath))
media.setOriginalUri(UriUtils.ofUri(libData.originalPath))
.setSandboxUri(UriUtils.ofUri(libData.sandboxPath))
.setCompressUri(UriUtils.ofUri(libData.compressPath))
.setThumbnailUri(UriUtils.ofUri(libData.videoThumbnailPath))
.setWatermarkUri(UriUtils.ofUri(libData.watermarkPath))
.setCropUri(UriUtils.ofUri(libData.cutPath))

// 资源信息
media.setMimeType(libData.mimeType)
Expand All @@ -264,6 +269,17 @@ open class PictureSelectorEngineImpl : IMediaEngine<MediaConfig, MediaData> {
// 状态信息
media.setCropState(libData.isCut)
.setCompressState(libData.isCompressed)

// =================
// = 资源路径最后校验 =
// =================

// 判断是否存在有效 Uri
val availableUri = media.getAvailableUri()
if (!UriUtils.isUriExists(availableUri)) {
// 上述已设置路径都不存在则设置原图路径
media.setOriginalUri(UriUtils.ofUri(libData.path))
}
return media
}

Expand Down

0 comments on commit bddd0cb

Please sign in to comment.