也有类似的问题,但是所有这些问题都建议将视图的初始可见性设置为INVISIBLE
,而不是GONE
。我的情况不同。
我的仪表板上有大约5个按钮,我正在手动对其进行充气,以将其添加到我的LinearLayout
中。我可以始终以VISIBLE
看到膨胀视图。将view
添加到LinearLayout
之后,我试图对其进行动画处理(从底部滑动到其位置),但是它不起作用。我的代码如下。
private void setDashboardButtons() {
ArrayList<String> dashboardTitles = DashboardUtils.getDashboardTitles();
ArrayList<Integer> dashboardIcons = DashboardUtils.getDashboardIcons();
ViewGroup root = findViewById(R.id.button_container);
for (int i = 0; i < (dashboardTitles.size() < dashboardIcons.size() ? dashboardTitles.size() : dashboardIcons.size()); i++){
View buttonView = DashboardButtonInflater.getDashboardButton(root, dashboardTitles.get(i), dashboardIcons.get(i), this);
if (buttonView == null) continue;
buttonView.setOnClickListener(this);
root.addView(buttonView);
YoYo.with(Techniques.SlideInUp)
.duration(1000)
.playOn(buttonView);
}
}
YOYO是一个非常简单且广泛使用的库,用于查看过渡动画。
结果
我在活动的setDashboardButtons()
方法内称此onCreate()
方法。活动加载后,我只会看到fadeIn动画,而不是过渡动画。如果我在单击按钮时实现相同的动画,则效果很好(因为到那时视图已经膨胀了)。
我可以猜测是由于动画在渲染视图之前发生而发生的,但是我不知道该如何解决。
我尝试做的一件事就是在里面做动画
buttonView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Animating view here
}
});
这很奇怪,但是看起来很丑。
期望
我希望活动开始时在slideIn
上执行buttonView
动画。希望能就此提供任何帮助。