在我的应用程序中,我得到了一个Activity
从数据库接收一定数量的条目。对于每个条目,都会制作一个按钮并将其添加到布局中。我希望按钮从底部到顶部“推入”。我通过稍微编辑 API 示例实现了这一点push_up_in.xml
。现在令人不安的是,看起来所有Button
的 s 都被同时推入了。Button
为了显得更“不同步”,我会在每次按下 a 之间稍作延迟。
到目前为止,相关代码如下所示
public void onCreate(Bundle icicle){
super.onCreate(icicle);
getDestinationLayout();
setContentView(linearLayout);
challengeName = getIntent().getExtras().getString("challengeName");
context = this;
datasource = new CustomDataSource(this);
showGames();
}
(...)
private void getDestinationLayout(){
linearLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.main_all_entries, null);
scrollView = (ScrollView) linearLayout.findViewById(R.id.rel_all_football);
buttonHolder = (LinearLayout) scrollView.findViewById(R.id.lin_all_buttonholder);
}
// is called from showGames() after taking fetched entries, sorted them and so on
private void createAndAddButtons(){
// the fetched entries are taken in another method
for(int i=0; i<fetchedEntries.size(); i++){
(1)
entryButton = new Button(this) //entryButton is global
// do some layout stuff
entryButton.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_up_in));
(2)
buttonHolder.add(entryButton);
}
}
现在我想,没问题,我只是Thread.sleep(x)
在点 (1) 分别在点 (2) 放置一个点 (1) 以获得该效果,但在这两种情况下,Activity
它本身的开始都会延迟(似乎是 x*fetchedEntries.size()
毫秒),并且按钮仍然被挤在一起。在之前的尝试中,我的 onCreate 就像
public void onCreate(Bundle icicle){
super.onCreate(icicle);
challengeName = getIntent().getExtras().getString("challengeName");
context = this;
datasource = new CustomDataSource(this);
showGames();
setContentView(linearLayout);
}
(而在getDestinationLayout()
里面showGames()
),问题是我首先添加按钮然后调用setContentView(linearLayout)
(我现在认为更接近我的目标确实是错误的),但正如所说的,实际版本也不是我想要的. 我怎样才能做到这一点?显然问题出在使用Thread.sleep(x)
,但另一方面我不完全理解为什么,因为从逻辑上讲程序应该是
-> setContentView(linearLayout)
=> Activity 显示在屏幕上
-> LOOP
->
Thread.sleep(x)
=> 程序等待 x 毫秒
-> 创建和添加按钮 => 按钮 i 在
REPEAT TILL END中被按下
编辑:
这是动画xml文件“push_up_in.xml”
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="300"/>
<alpha android:fromAlpha="0.5" android:toAlpha="1.0" android:duration="1000" />
</set>