6

私は、LinearLayout, I am dynamically adding TextView, ImageView to that LinearLayoutこれらのTextViewsとImageViewsにOnClickListenerを追加しました。

10個のアイテムを含む配列リストがあります。forループを使用して、各値を取得して表示しています。これは、次と前のボタンがあるクイズアプリなので、クリックすると、配列リストからアイテムを1つずつ表示します。Now I need slide In and slide Out animation to apply to this Linear Layout.

私はこれを見ました:

リンク1

リンク2

そしてまた私はこれを試しました

slideIn = new TranslateAnimation(
    TranslateAnimation.RELATIVE_TO_PARENT, 1.0f,
    TranslateAnimation.RELATIVE_TO_PARENT, 0.0f,
    TranslateAnimation.RELATIVE_TO_PARENT, 0.0f,
    TranslateAnimation.RELATIVE_TO_PARENT, 0.0f);

slideIn.setDuration(500);
slideOut = new TranslateAnimation(
    TranslateAnimation.RELATIVE_TO_PARENT, 0.0f,
    TranslateAnimation.RELATIVE_TO_PARENT, -1.0f,
    TranslateAnimation.RELATIVE_TO_PARENT, 0.0f,
    TranslateAnimation.RELATIVE_TO_PARENT, 0.0f);

slideOut.setDuration(500);

しかし、機能していません。これを手伝ってください。

編集:

問題:これを線形レイアウトに適用しましたが、次のボタンをクリックすると、現在の質問が左にスライドし、空白の画面がスライドして次の質問が表示されますが、現在の質問がスライドしたらすぐに表示されます次の質問が続くはずです。

4

2 に答える 2

4

このxmlをres/anim/で使用します

leftright.xml
これは、左から右へのアニメーション用です。

  <set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
    <translate android:fromXDelta="-100%" android:toXDelta="0%"
      android:fromYDelta="0%" android:toYDelta="0%"
     android:duration="700"/>
   </set>

これをJavaコードで使用します

Handler handler = new Handler();
Runnable runnable = new Runnable(){
{
   public void run()
 {
   item[i].setInAnimation(AnimationUtils.loadAnimation(this,R.anim.leftright.xml));
   i=i+1;
   handler.postDelayed(this,5000);
 }
};handler.postDelayed(runnable,5000);
于 2012-12-25T05:24:18.037 に答える
4

レイアウトに同じコンテンツがある場合は、ビューフリッパー内に2つのレイアウトを作成します。最初のビューにデータをロードして表示します。ユーザーが[次へ]または[前へ]をクリックすると、次のビューにデータが読み込まれ、フラグを保持して2番目のビューが表示されたことを示し、アニメーションで表示します。

次に、フラグ値に基づくデータを適切なビューにロードし、shownedext()を呼び出します。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mainFlipper = (ViewFlipper) findViewById(R.id.flipper);
    firstLayout = (LinearLayout) findViewById(R.id.layout1);
    secondLayout = (LinearLayout) findViewById(R.id.layout2);


    findViewById(R.id.btnPrevious).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            showPrevious();
        }
    });

    findViewById(R.id.btnNext).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            showNext();
        }
    });

}

private void showNext() {
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_left));
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_right));
    flip();
}

private void showPrevious() {
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_right));
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_left));
    flip();
}

private void flip() {
    if(isFirstVisible) {
        isFirstVisible = false;
        secondLayout.removeAllViews();
        secondLayout.addView(getTextView("Second"));
    } else {
        isFirstVisible = true;
        firstLayout.removeAllViews();
        firstLayout.addView(getTextView("First"));
    }
    mainFlipper.showNext();
}

private TextView getTextView(String txt) {
    TextView txtView = new TextView(this);
    txtView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    txtView.setText(txt);
    return txtView;
}
于 2012-12-25T05:53:35.910 に答える