问题描述
如果我使用setComposition
,它可用于缓存。
所以我认为它比setAnimation
更快。
但是根据我的测试,setComposition
的绘制速度比setAnimation
慢。
我想知道为什么。
如果我检查onViewAttachedToWindow(PersonAdapter)-onCreate(MainAtivity)的时间,则setComposition比setAnimation绘制视图的速度要慢。
MainActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lottieCache.put("person" + R.raw.person,LottieCompositionFactory.fromrawResSync(getApplicationContext(),R.raw.person).getValue());
Log.d("onCreate",System.currentTimeMillis()+"");
RecyclerView recyclerView = findViewById(R.id.recyclerView);
linearlayoutmanager layoutManager = new linearlayoutmanager(this,linearlayoutmanager.VERTICAL,false);
recyclerView.setLayoutManager(layoutManager);
PersonAdapter adapter = new PersonAdapter();
adapter.addItem(new Person("aaa","010-0000-0000",R.raw.person));
adapter.addItem(new Person("aaa",R.raw.person));
recyclerView.setAdapter(adapter);
}
PersonAdapter
public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.ViewHolder>{
ArrayList<Person> items = new ArrayList<Person>();
static LottieCache lottieCache = LottieCache.getInstance();
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView = inflater.inflate(R.layout.person_item,parent,false);
Log.d("Adapter","onCreateViewHolder");
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position) {
Person item = items.get(position);
holder.setItem(item);
Log.d("Adapter","onBindViewHolder");
}
@Override
public int getItemCount() {
Log.d("Adapter","getItemCount");
return items.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
TextView textView2;
LottieAnimationView lottieAnimationView;
public ViewHolder(View itemView) {
super(itemView);
Log.d("Adapter","ViewHolder");
textView = itemView.findViewById(R.id.textView);
textView2 = itemView.findViewById(R.id.textView2);
lottieAnimationView = itemView.findViewById(R.id.icon_animation);
}
public void setItem(Person item) {
textView.setText(item.getName());
textView2.setText(item.getMobile());
lottieAnimationView.setComposition(LottieCache.getInstance().get("person"+R.raw.person));
// lottieAnimationView.setAnimation(item.getAnimationId());
lottieAnimationView.playAnimation();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)