私のアプリケーションのある時点でActivity
、データベースから一定量のエントリを受け取るを取得しました。エントリごとにボタンが作成され、レイアウトに追加されます。ボタンを下から上に「押し込む」ようにしたい。APIサンプルを少し編集することでこれを達成しましたpush_up_in.xml
。Button
ここで気になるのは、すべてが同時に押し込まれているように見えることです。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)を置くだけですが、どちらの場合も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)
=>アクティビティが画面に表示されます
->ループ
->
Thread.sleep(x)
=>プログラムはxミリ秒待機します
->作成および追加ボタン=>ボタンiがREPEATTILLENDで押され
ます
編集:
これがアニメーション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>