17

アニメーションを使用してレイアウトを画面に表示しようとしています。アイデアは、レイアウトが高さ 0 から始まり、100% まで成長するというものです。

私はこれに本当に問題があり、助けが必要です。何らかの理由でアニメーションは実行されません。

ここに私のアニメーションXMLファイルがあります

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="0.0"
        android:toXScale="1"
        android:fromYScale="1.0"
        android:toYScale="1.0"
        android:fillAfter="false"
         />

</set>

レイアウト ファイルは非常に基本的なもので、次のように設計されています。

<?xml version="1.0" encoding="utf-8"?>

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

<LinearLayout
        android:id="@+id/dialog"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:orientation="vertical"
        android:layout_centerVertical="true"
        android:background="@drawable/border">
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Phone"
            android:id="@+id/textView"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Address"
            android:id="@+id/textView1"/>
    <Button android:id="@+id/btn1"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:text="Action 1"
            />
    <Button android:id="@+id/btn2"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:text="Action 2"
            />
</LinearLayout>
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Animate"
        android:id="@+id/btnAnimate" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
        android:onClick="animate"/>
</RelativeLayout>

私の活動コードも非常に基本的です

public class MyActivity extends Activity implements Animation.AnimationListener{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 }

public void animate(View view){
    LinearLayout dialog   = (LinearLayout)findViewById(R.id.dialog);
    dialog.setVisibility(LinearLayout.VISIBLE);
    Animation animation   =    AnimationUtils.loadAnimation(this, R.anim.anim);
    Log.i("animate","Begin Animation");
    animation.reset();
  //  animation.setFillAfter(true);
    animation.setAnimationListener(this);
    dialog.setAnimation(null);
    Log.i("animate","End Animation");
}

@Override
public void onAnimationStart(Animation animation) {
    //To change body of implemented methods use File | Settings | File Templates.
}

@Override
public void onAnimationEnd(Animation animation) {
    //To change body of implemented methods use File | Settings | File Templates.
}

@Override
public void onAnimationRepeat(Animation animation) {
    //To change body of implemented methods use File | Settings | File Templates.
}
}

ありがとうございました

4

4 に答える 4

7

Android 3.0 以降で最も簡単な方法は、子を追加するビューにこのプロパティを設定することです。

android:animateLayoutChanges="true"

独自のアニメーションを作成することもできます:

カスタム レイアウト アニメーションを提供する場合は、LayoutTransition オブジェクトを作成し、setLayoutTransition() メソッドを使用してレイアウトに提供します。

詳細については、http: //developer.android.com/training/animation/layout.html#activityを参照してください。

于 2014-06-02T12:15:01.990 に答える
1

アニメーションは開始されていないようです。追加してみてください:

animation.start()
于 2013-09-03T00:48:36.810 に答える