抽奖动画视图加载时间

时间:2020-09-16 03:46:35

标签: android lottie

如果我使用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" , "010-0000-0000",R.raw.person));
    adapter.addItem(new Person("aaa" , "010-0000-0000",R.raw.person));
    adapter.addItem(new Person("aaa" , "010-0000-0000",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();
    }
}

0 个答案:

没有答案