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/

相关文章:

java - android fragment 中的textview中不显示全文

android - 如何以相同的 Intent 从相机获取全尺寸图片和缩略图

delphi - 加载图像和调整图像大小的最快方法是什么?

android - 如何使用 ByteBuffer(无颜色校正)获取 RGB 位图?

android - 无法使用 Google Android 登录获取 API 异常 10

android - mmap后在memcpy中获取段错误SIGSEGV

java - 用gradle构建失败

android - 获取图像缩略图文件路径

Android NotificationListenerService 获取 EXTRA_SMALL_ICON 总是返回 null

android - 如何使用 SHOW_OR_CREATE_CONTACT 并为联系人设置照片?