2

このような見方をしています

ここに画像の説明を入力

ユーザーが「Audi」などのボタンをクリックすると。

私が欲しいのは、この上のビューを次のようなアニメーションで表示することです ここに画像の説明を入力

私が試したことは

このようなレイアウトを作成します(アニメーションをテストするためだけに)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:id="@+id/hideLayout"
    android:layout_width="200dip"
    android:layout_height="wrap_content"
    android:layout_above="@+id/buttonLayout"
    android:background="#f0f"
    android:visibility="gone" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
</LinearLayout>

<LinearLayout
    android:id="@+id/buttonLayout"
    android:layout_width="200dip"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/btn_showView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Show View" />
</LinearLayout>

そしてアニメーションを次のようにします

Animation showView=(Button)findViewById(R.id.btn_showView);

私のアニメーションファイルは

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="300"
        android:fromYDelta="100%p"
        android:toYDelta="0" />

</set>

その後

showView=(Button)findViewById(R.id.btn_showView);

    showView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            hideLayout.startAnimation(animShow);
            animShow.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    hideLayout.setVisibility(View.VISIBLE);

                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    hideLayout.setVisibility(View.VISIBLE);

                }
            });

        }
    });

それは機能していますが、私が望む方法ではありません。はtext View下から来ています。私のイメージが私が望むものを示していることを願っています。

前もって感謝します。

4

3 に答える 3

1

I found a solution for android >=3.0, Object Animator

I fix the height of the view as it is not a problem in my case.

I make two view

1) Top View width fix height 100dip(Which need to be animate) make it invisible

2) Bottom View fix height 100dip(Visible)

3) when I click showView I call following lines

ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(topLayout,
            "y", 100, 0);
objectAnimator.addListener(new AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animation) {
            // TODO Auto-generated method stub
            topLayout.setVisibility(View.VISIBLE);
            showView.bringToFront();
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animator animation) {

        }

        @Override
        public void onAnimationCancel(Animator animation) {
            // TODO Auto-generated method stub

        }
    });
            objectAnimator.setDuration(500);
    objectAnimator.start();

may be it will help some one. :)

于 2012-08-15T03:43:03.897 に答える
0

コード内のTextViewのため、 は下から来ていandroid:fromYDelta="100%p"ます。textView を元の位置から上に移動する場合は、次のコードを使用します。

<?xml version="1.0" encoding="utf-8"?>
  <set xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/linear_interpolator" >

       <translate
            android:duration="500"
            android:toYDelta="-66%"
            android:fromYDelta="0%" />

   </set> 

-66% 要件に応じて値を変更します

画像から推測できるのは、親レイアウト Marke: Audiをスライドインおよびスライドアウトしたいということです。そのためには、親レイアウト (スライド インおよびスライド アウトするレイアウトの親) をアニメーション化し、2 つのビューの高さの比率を修正する必要があります。そして、アニメーションの最後で、上部ビューの可視性を に変更し GONEます。

于 2012-08-09T09:22:23.027 に答える
0

res -> animフォルダーを作成してみてください

slide_in_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="-100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_longAnimTime" />

slide_in_top.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_longAnimTime"/>

slide_out_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:duration="@android:integer/config_longAnimTime"
   android:fromYDelta="0"
   android:toYDelta="100%p" />

slide_out_top.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0" android:toYDelta="-100%p"
android:duration="@android:integer/config_longAnimTime" />

overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_top);

于 2012-08-09T09:31:54.123 に答える