【发布时间】:2018-06-21 20:53:40
【问题描述】:
我有一个在垂直线性布局中具有 3 个视图 (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 上的一对一动画吗?谢谢你。
【问题讨论】:
标签: android android-layout animation android-animation android-view