Android长文件名视频选择对话框优化方案求荐(支持视频预览)
Android视频选择:完整文件名显示+预览解决方案
需要选择文件名较长、仅末尾存在差异的视频时,系统内置选择器(如图库)因版本差异无法完整展示文件名,同时希望能显示视频预览,可参考以下几种方案:
一、自定义视频选择界面
自己实现完全可控的选择界面,彻底解决系统选择器的局限性:
- 核心思路:通过
MediaStore查询设备内的视频文件,用RecyclerView展示每个视频项,每个项包含视频缩略图和完整文件名。 - 关键实现:
- 查询视频数据:
// 定义需要查询的字段 val projection = arrayOf( MediaStore.Video.Media._ID, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.DURATION ) // 过滤支持的视频格式 val selection = "${MediaStore.Video.Media.MIME_TYPE} IN (?, ?, ?)" val selectionArgs = arrayOf("video/mp4", "video/quicktime", "video/mpeg") // 执行查询 val cursor = contentResolver.query( MediaStore.Video.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null ) - 加载视频缩略图:借助Glide或Coil等图片加载库快速生成预览图
Glide.with(context) .asBitmap() .load(Uri.withAppendedPath(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, videoId)) .placeholder(R.drawable.video_placeholder) .into(thumbnailImageView) - 文件名显示:将文件名TextView的
ellipsize设为end,或添加长按弹窗显示完整文件名,也可设置TextView允许横向滚动。
- 查询视频数据:
- 优势:完全自定义UI,适配所有Android版本,可额外添加排序、搜索等功能;同时保证文件名完整展示和视频预览。
- 注意事项:需申请对应权限(Android 12及以下需
READ_EXTERNAL_STORAGE,Android 13+需READ_MEDIA_VIDEO)。
二、使用第三方文件选择库
直接采用成熟的第三方库,无需从零开发:
- 选择支持媒体预览、完整文件名显示的库(如MaterialFilePicker、FilePicker等),这些库已适配多版本Android的UI和权限逻辑。
- 简单配置示例(以MaterialFilePicker为例):
MaterialFilePicker() .withActivity(this) .withRequestCode(VIDEO_PICK_REQUEST) .withFilter(Pattern.compile(".*\\.(mp4|mov|avi)$")) // 过滤视频格式 .withFilterDirectories(true) .withShowHiddenFiles(false) .start() - 优势:节省开发时间,快速集成稳定的选择功能,多数库默认支持文件名完整展示和视频预览。
三、系统选择器的有限优化(仅作补充)
如果必须使用系统选择器,可尝试以下调整,但效果因版本而异:
- 给Intent添加
Intent.EXTRA_TITLE设置选择器标题,部分系统可能会优化布局以显示更长文件名; - 在用户选择文件后,在APP内主动获取并展示完整文件名,供用户确认选择是否正确,但无法解决选择时的显示问题。
内容的提问来源于stack exchange,提问作者DriveCarefully
相关产品推荐
相关产品推荐

