Việc sử dụng ảnh động dựa trên lớp trong Khung hiển thị có thể cải thiện hiệu suất và giảm
hiện tượng giật nhưng khá khó khăn khi thiết lập. Chiến lược phát hành đĩa đơn
AnimationBuilder
có thể giúp giảm đáng kể độ phức tạp và cải thiện khả năng đọc cho các lớp
ảnh động.
Giả sử bạn cần tạo hiệu ứng làm mờ chéo liên tục giữa hai cụ thể, chẳng hạn như trong hình sau.
Dưới đây là một ví dụ về cách thực hiện việc này bằng cách sử dụng trực tiếp các API ảnh động lớp.
auto primary_title_sequence = std::make_unique<LayerAnimationSequence>();
auto working_sequence = std::make_unique<LayerAnimationSequence>();
primary_title_sequence->set_is_repeating(true);
working_sequence->set_is_repeating(true);
primary_title_sequence->AddElement(CreatePauseElement(OPACITY, base::Seconds(2)));
primary_title_sequence->AddElement(CreateOpacityElement(0.0f, base::Seconds(1)));
primary_title_sequence->AddElement(CreatePauseElement(OPACITY, base::Seconds(2)));
primary_title_sequence->AddElement(CreateOpacityElement(1.0f, base::Seconds(1)));
working_sequence->AddElement(CreatePauseElement(OPACITY, base::Seconds(2)));
working_sequence->AddElement(CreateOpacityElement(1.0f, base::Seconds(1)));
working_sequence->AddElement(CreatePauseElement(OPACITY, base::Seconds(2)));
working_sequence->AddElement(CreateOpacityElement(0.0f, base::Seconds(1)));
primary_title_->layer()->GetAnimator()->StartAnimation(primary_title_sequence.release());
working_->layer()->GetAnimator()->StartAnimation(working_sequence.release());
Phần sau đây cho biết cách tạo hiệu ứng tương tự bằng AnimationBuilder
.
Ảnh động bắt đầu khi thoát khỏi phạm vi.
AnimationBuilder()
.Repeatedly()
.Offset(base::Seconds(2))
.SetDuration(base::Seconds(1))
.SetOpacity(primary_title_, 0.0f)
.SetOpacity(working_, 1.0f)
.Offset(base::Seconds(2))
.SetDuration(base::Seconds(1))
.SetOpacity(primary_title_, 1.0f)
.SetOpacity(working_, 0.0f);
Bạn muốn viết hoặc đọc mã nào? Quan trọng hơn, AnimationBuilder
không làm tăng thêm chi phí cho ảnh động vì mục đích của nó là đơn giản hoá
việc tạo hoạt ảnh dựa trên lớp. Hãy thử tính năng này vào lần tiếp theo bạn cần
tạo hiệu ứng cho nội dung nào đó.
Để được trợ giúp thêm, hãy gửi email chromium-dev@chromium.org.