这张图片显示了当前的输出,它被打乱和重复了
我有一个 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/