在android中显示图像和视频

时间:2018-05-26 07:58:58

标签: android android-recyclerview

我试图列出文件夹中的所有图片和视频,但在recyclerview和gridview中设置它会产生良好的效果。它卡在卷轴上。请建议如何以更好的方式显示所有文件。

这是我获取文件的方式,

listFile = AllUtils.getFiles(fetchPath, mContext);

在recyclerview中显示部分

public void onBindViewHolder(@NonNull DetailViewHolder holder, final int position) {
    if (listFile.get(position).toString().contains("mp4")) {
        Bitmap myBitmap = ThumbnailUtils.createVideoThumbnail(listFile.get(position).toString(), MediaStore.Video.Thumbnails.MINI_KIND);
        holder.ivIcon.setImageBitmap(myBitmap);
        holder.ivPlay.setVisibility(View.VISIBLE);
    }
}

2 个答案:

答案 0 :(得分:2)

GitHub上有各种免费的开源库可用于处理图像和视频。

我认为使用BitMap来显示图片不是一个好主意,而是BitMap您应该使用Glide库来显示图片并使用fenster来制作视频。

在项目中导入Glide

repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.7.1'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}

像这样显示图片:

  GlideApp
    .with(myFragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(myImageView);

您还可以使用网址

上传图片
  GlideApp.with(this).load("http://........").into(imageView);

详细了解glidefenster.

答案 1 :(得分:1)

当我在recylerview中显示列表中的图像时,我遇到了同样的问题。由于recylerview缓存并重新生成内部视图,因此在recylerview中获取位置可能会因listfile中的索引而失败。通过将recylerview的高速缓存大小增加到listfile中的项目数,可以确保recylerview中的位置是listfile中的确切位置。 在设置适配器之前,将这行代码添加到recylerview。

// Let's say you have 30 items in your listfile
// Or if you cannot make sure the number of items give a bigger number 
recyclerView.setItemViewCacheSize(30);

希望它有所帮助。