[英]Load custom gifs from assets folder into recyclerview android
我在資產文件夾中創建了一個名為 gifs 的子文件夾,我在其中添加了 5 個 gifs 。 我想在 recyclerview 中顯示這些 gif,但由於 recyclerview 是空的,所以我無法顯示。 我不明白哪里出錯了,請幫助我。 提前致謝!
public class GifAdapter extends RecyclerView.Adapter < GifAdapter.GifViewHolder > {
Context context;
List<String> gifList;
GifAdapterListener listener;
public GifAdapter(Context context, GifAdapterListener listener) {
this.context = context;
this.gifList = loadGifs();
this.listener = listener;
}
private List<String> loadGifs() {
List<String> gifs = new ArrayList();
gifs.add("a.gif");
gifs.add("aa.gif");
gifs.add("aaa.gif");
gifs.add("aaaa.gif");
gifs.add("aaaaa.gif");
return gifs;
}
// more code
// onBindViewHolder
@Override public void onBindViewHolder(@NonNull GifViewHolder holder, int position) {
try {
InputStream inputStream = context.getAssets().open("gifs");
byte[] bytes = IOUtils.toByteArray(inputStream);
holder.gifView.setBytes(bytes); // gifView is GifImageView using felipecsl.gifimageview library
holder.gifView.startAnimation();
} catch (IOException e) {
e.printStackTrace();
}
}
// my fragment oncreate
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_gif, container, false);
recyclerGifs = view.findViewById(R.id.recyclerGifs);
recyclerGifs.setHasFixedSize(true);
recyclerGifs.setLayoutManager(new GridLayoutManager(getActivity(), 2));
gifAdapter = new GifAdapter(getContext(), this);
recyclerGifs.setAdapter(gifAdapter);
return view;
}
}
使用 Glide 並從資產中獲取 gif 圖像,如下所示:
private List<String> loadGifs() {
List<String> gifs = new ArrayList();
gifs.add("file:///android_asset/a.gif");
gifs.add("file:///android_asset/aa.gif");
gifs.add("file:///android_asset/aaa.gif");
return gifs;
}
然后加載:
@Override
public void onBindViewHolder(@NonNull GifViewHolder holder, int position) {
Glide.with(this).asGif().load(gifs(position)).into(imageView);
}
加載 GIF 的簡單示例:
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(this).asGif().load(R.raw.image_gif).into(imageView);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.