gpt4 book ai didi

android - 回收站 View 非常滞后

转载 作者:行者123 更新时间:2023-11-29 02:20:17 25 4
gpt4 key购买 nike

我一直在使用回收器 View 在我的 fragment 上显示 15 张图像。图像位于可绘制文件夹中。我尝试了外部 View 来执行此操作,但速度要慢得多并且滞后很多。因此我使用回收者 View 来解决这个问题。该 fragment 仅需大约 8 秒即可打开,而且速度非常慢。有什么出路或替代方案吗? 这是我的 fragment 代码:

public class GifFragment extends Fragment {
private View view;
RecyclerView rvMain;

public GifFragment() {
// Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view=inflater.inflate(R.layout.fragment_gif,container,false);


rvMain = view.findViewById(R.id.rvMain);

int sticker[]={R.drawable.kitty1, R.drawable.kitty2, R.drawable.kitty3, R.drawable.kitty4, R.drawable.kitty5
, R.drawable.kitty6, R.drawable.kitty7, R.drawable.kitty8, R.drawable.kitty9, R.drawable.kitty10
, R.drawable.kitty11, R.drawable.kitty12, R.drawable.kitty13, R.drawable.kitty14, R.drawable.kitty15};

MyAdapter adapter = new MyAdapter(sticker);
rvMain.setLayoutManager(new GridLayoutManager(getContext(), 3));
adapter.setHasStableIds(true);
rvMain.setAdapter(adapter);
return view;
}

private class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {


int sticker[];

public MyAdapter( int sticker[]) {
this.sticker=sticker;
}


@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item, parent, false);
MyViewHolder viewHolder = new MyViewHolder(v);
return viewHolder;
}

@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.logo.setImageResource(sticker[position]);
holder.logo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "This is: " , Toast.LENGTH_SHORT).show();
}
});

}

@Override
public int getItemCount() {
return sticker.length;
}
}
private class MyViewHolder extends RecyclerView.ViewHolder{

public ImageView logo;
public TextView name;

public MyViewHolder(View itemView) {
super(itemView);
logo = (ImageView)itemView.findViewById(R.id.ivLogo);

}
}

最佳答案

使用 Glide 高效加载图片。

例子在应用程序模块 gradle 添加这个

repositories {
mavenCentral()
google()
}

dependencies {
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}

然后使用 glide 从 drawable 加载图像

Glide.with(this).load(R.drawable.image_name).into(imageView);

示例

在 BindViewHolder 上执行此操作

Glide.with(this).load(sticker[position]).into(holder.logo);

关于android - 回收站 View 非常滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56489104/

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