gpt4 book ai didi

Android 从 Picasso 获取图像到位图数组

转载 作者:太空狗 更新时间:2023-10-29 16:30:29 25 4
gpt4 key购买 nike

我想从我的 String[] 中获取带有链接的 Bitmap[]。但这并不像我想要的那样工作。我有这个方法:

private Bitmap[] getBitmaps(String[] images){
ArrayList<Bitmap> temp = new ArrayList<>();
for(int i = 0; i < images.length; i++){
ImageView img = new ImageView(getContext());
FrameLayout.LayoutParams x = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
img.setLayoutParams(x);
Picasso.with(getContext()).load(MainPostAdapter.USER_URL+images[i]+".png").into(img, new Callback() {
@Override
public void onSuccess() {
temp.add(BitmapRes.drawableToBitmap(img.getDrawable()));
movableBackgroundContainer.removeView(img);
}

@Override
public void onError() {

}
});
movableBackgroundContainer.addView(img);
}
return temp.toArray(new Bitmap[temp.size()]);
}

问题是我得到一个空数组,因为它在 onSuccess 函数之后将位图添加到列表中。我现在如何才能等到所有 onSuccess 添加位图然后返回?

最佳答案

Picasso 的 get() 函数可以满足您的需求。它下载位图而不是将图像加载到 ImageView 中。注意 Picasso 的 get() 方法不能在主线程上调用。我的示例使用 AsyncTask 在单独的线程上下载图像。

    String[] images = new String[] {"http://path.to.image1.jpg", "http://path.to.image2.jpg"};
new AsyncTask<String[], Void, List<Bitmap>>() {
@Override
protected List<Bitmap> doInBackground(String[]... params) {
try {
List<Bitmap> bitmaps = new ArrayList<Bitmap>();
for (int i = 0; i < params[0].length; ++i) {
bitmaps.add(Picasso.with(getActivity()).load(params[0][i]).get());
}
return bitmaps;
} catch (IOException e) {
return null;
}
}

@Override
public void onPostExecute(List<Bitmap> bitmaps) {
if (bitmaps != null) {
// Do stuff with your loaded bitmaps
}
}
}.execute(images);

关于Android 从 Picasso 获取图像到位图数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40267699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com