android - 如何在 Glide 的帮助下将 Arraylist<Bitmap> 作为输出?

标签 android thumbnails android-bitmap android-glide

enter image description here 这张图片显示了当前的输出,它被打乱和重复了

我有一个 arraylist mp3 文件路径我想从中提取缩略图它与位图的第一代码工作正常但提取速度太慢。

filterpath==MP3文件路径

MEDIACOVER==用于存储位图图像的数组列表。

Glide version==com.github.bumptech.glide:glide:4.8.0,我认为这是最新版本的Glide。

public class Main2Activity extends AppCompatActivity {
private ArrayAdapter<Bitmap> adp;
ListView lv;
ArrayList<String> path;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    path=new ArrayList<>();
    lv=findViewById(R.id.chckimage);
    Intent in=getIntent();
    path=in.getStringArrayListExtra("path");
    adp = new ArrayAdapter(Main2Activity.this, 
    android.R.layout.simple_list_item_1);
    lv.setAdapter(adp);
    loadArrayList(path);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int 
         position, long id) {
            ImageView iv=findViewById(R.id.getting);
            iv.setImageBitmap(adp.getItem(position));
            Toast.makeText(Main2Activity.this, ""+adp.getItem(position), 
         Toast.LENGTH_LONG).show();
        }
    });
}  

现在加载图片的方法......

 public void loadArrayList(ArrayList<String> Path) {
    try {
        for(String temp:Path){
            MediaMetadataRetriever mmr = new MediaMetadataRetriever();
            mmr.setDataSource(temp);
            byte[] data = mmr.getEmbeddedPicture();
            if (data != null) {
                Glide.with(this)
                        .asBitmap()
                        .load(data)
                        .thumbnail(0.1f)
                        .apply(RequestOptions.circleCropTransform()) //------getting image in circle
                        .listener(new RequestListener<Bitmap>() {
                            @Override
                            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                                return false;
                            }

                            @Override
                            public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                                adp.add(resource);
                                return true;
                            }
                        }).submit();
                mmr.release();
            }else{

                   //LOAD FROM DRAWABLE
            }

        }
    } catch (Exception e){}
}  

在这里,我使用 imageview 进行检查,现在它给出了另一个错误,如 复制值并从它们的路径中改组

我想从数组列表中的总路径中获取总图像

我通过运行相同的应用程序获得此输出...路径数组列表的大小仅为 5。但它给我输出 10 个位图图像,每个值都有副本

最佳答案

尝试将glide的方式从异步改为同步。

public ArrayList<Bitmap> getArrayList(ArrayList<String> Path) {
    try {
        arrayList=new ArrayList<>();
        for(String temp:Path){
            MediaMetadataRetriever mmr = new MediaMetadataRetriever();
            mmr.setDataSource(temp);
            byte[] data = mmr.getEmbeddedPicture();
            if (data != null) {
                FutureTarget<Bitmap> submit = Glide.with(this)
                        .asBitmap()
                        .load(data)
                        .thumbnail(0.1f)
                        .apply(RequestOptions.circleCropTransform()) //------getting image in circle
                        .submit();
                button.setImageBitmap(submit.get());
                arrayList.add(submit.get());
                mmr.release();
            }else{
                Bitmap bitmap=BitmapFactory.decodeResource(this.getResources(),
                        R.drawable.example_picture);
                arrayList.add(bitmap);
                mmr.release();
            }

        }
    } catch (Exception e){
    }
    return arrayList;
}

关于android - 如何在 Glide 的帮助下将 Arraylist<Bitmap> 作为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54276708/

相关文章:

android - 将 Android fragment 保存在 Backstack 中

html - 填充 Bootstrap 缩略图

android - 错误通知 : The given region must intersect with the Bitmap's dimensions

android - 加载位图时出现内存不足错误

android - 构建读/写应用程序是否需要用于 NFC 读/写器 acr122u 设备的 SDK?

java - 如何防止直接 URL 访问 Android 应用程序中使用的文件?

android - 当我选择多个图像时,RxPparazzo 检索相同的图像

jquery - 如何设置 Twitter Bootstrap 缩略图的高度?

python - 缩小图像的宽度/高度以适应给定的纵横比。如何? - Python 图像缩略图

android - Android 中相机图像返回缩略图