gpt4 book ai didi

android - 按顺序将动画应用到多个 View

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:43 25 4
gpt4 key购买 nike

我有一个在垂直线性布局中包含 3 个 View (buttonViews) 的 Activity 。我正在动态生成(膨胀)这些 View 。我想应用一个动画,这样在 Activity 开始时,第一个按钮滑入 -> 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);
}

结果:

上述方法等待所有 View 的总延迟,最后将所有 View 一起消除。我猜这里的罪魁祸首是线程。该交易实际上是阻止 UI 线程执行任何动画。我可能是错的。

我也试过运行里面的动画代码

new Thread(new Runnable(){...}).run()

但这也不起作用。

期望:

有人可以帮我在buttonView 上实现一对一的动画吗?谢谢你。

最佳答案

动画是有状态的对象,你不应该同时多次使用同一个实例。在您的情况下,bottomToTopfadeIn 动画在动画集之间共享。当集合开始时(initialize() 被调用)它会设置它的 child 的开始偏移量。

例如,该方法可能如下所示:

//The function that adds animation to buttonView, with a delay.
private void animateBottomToTop(final View buttonView,long delay) {
AnimationSet animationSet = new AnimationSet(false);
// create new instances of the animations each time
animationSet.addAnimation(createBottomToTop());
animationSet.addAnimation(createFadeIn());
animationSet.setStartOffset(delay);
buttonView.setAnimation(animationSet);
}

关于android - 按顺序将动画应用到多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50977273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com