1

内部に複数のビューを含むカスタム フレームレイアウトを作成しました。レイアウトをクリックすると、レイアウト内でいくつかのアニメーションが実行されます。以下のように、XML でレイアウトの 2 つのインスタンスを作成しました。

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="19dp"
    android:orientation="vertical" >

    <com.example.MyProj
        android:id="@+id/frame1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="19dp"
        android:layout_marginRight="28dp"
        android:clickable="true" >
    </com.example.MyProj>

    <com.example.MyProj
        android:id="@+id/frame2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:clickable="true" >
    </com.example.MyProj>
</LinearLayout>

ここでの奇妙な動作は、メイン クラスでこれらのレイアウトを定義した後、最初のレイアウトをクリックすると、2 番目のレイアウトでアニメーションが発生することです。つまり、frame1 をクリックすると、フレーム 2 がアニメーション化されます。2 番目のレイアウトは、クリックすると正常に応答します。そのため、最新に定義されているレイアウトがアニメーション化されています。最初に定義されたレイアウトがアニメーション化されていません。

メイン xml のレイアウト

これは、メイン クラスでレイアウトを定義した方法です。

    final MyProj fl = (MyProj) findViewById(R.id.frame1);
    final MyProj fl1 = (MyProj) findViewById(R.id.frame2);

    fl.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            fl.reset();
            fl.animation();
        }
    });

    fl1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            fl.reset();
            fl1.animation();
        }
    });

これらのレイアウトがこのように動作する理由を誰か説明してもらえますか? 前もって感謝します。

4

2 に答える 2