我有一个包含三个视图(buttonViews
)的活动,它们以垂直线性布局呈现。我正在动态生成(填充)这些视图。我想要应用一种动画效果,使得在活动启动时,第一个按钮滑入 -> 100毫秒延迟 -> 第二个按钮滑入 -> 100毫秒延迟 -> 第三个按钮滑入。
尝试
我尝试以以下方式实现:
private void setMainButtons() {
ArrayList<String> dashboardTitles = DashboardUtils.getDashboardTitles();
ArrayList<Integer> dashboardIcons = DashboardUtils.getDashboardIcons();
final ViewGroup root = findViewById(R.id.button_container);
for (int i = 0; i < (dashboardTitles.size() < dashboardIcons.size() ? dashboardTitles.size() : dashboardIcons.size()); i++){
final View buttonView = DashboardButtonInflater.getDashboardButton(root, dashboardTitles.get(i), dashboardIcons.get(i), this);
if (buttonView == null) continue;
buttonView.setOnClickListener(this);
root.addView(buttonView);
animateBottomToTop(buttonView, (long) (i*50)); // Calling method to animate buttonView
}
}
//The function that adds animation to buttonView, with a delay.
private void animateBottomToTop(final View buttonView,long delay) {
AnimationSet animationSet = new AnimationSet(false);
animationSet.addAnimation(bottomToTop);
animationSet.addAnimation(fadeIn);
animationSet.setStartOffset(delay);
buttonView.setAnimation(animationSet);
}
结果:
上述方法等待所有视图的延迟结束,最后将所有视图一起动画化。我猜测罪魁祸首是线程。实际上,延迟正在阻止UI线程执行任何动画操作。虽然我可能错了。
我还尝试在内部运行动画代码
new Thread(new Runnable(){...}).run()
但那也没起作用。
期望:
有人能帮我实现在buttonView
上逐个执行动画吗?谢谢。