抽奖动画视图加载时间

问题描述

如果我使用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 (将#修改为@)