我在垂直线性布局中有一个包含3个视图(buttonViews)的活动.我正在动态地生成(膨胀)这些视图.我想应用一个动画,以便在活动开始时,第一个按钮滑入 – > 100毫秒延迟 – >第二个按钮滑入 – > 100毫秒延迟 – >第三个按钮滑入.
尝试
我尝试用这种方式实现它:
private void setMainButtons() {
ArrayList dashboardTitles = DashboardUtils.getDashboardTitles();
ArrayList 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);
}
结果:
上述方法等待所有视图的总延迟,最后将所有视图一起发送.我猜这里的罪魁祸首就是线索. dealy实际上阻止了UI线程做任何动画.我可能错了.
我也试过在里面运行动画代码
new Thread(new Runnable(){...}).run()
但那也不起作用.
期望:
有人可以帮我在buttonView上实现一对一的动画吗?谢谢.