1

我创建了一个自定义框架布局,其中包含多个视图。单击布局时,会在布局内完成一些动画。我在我的 XML 中创建了两个布局实例,如下所示:

<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>

现在这里奇怪的行为是,在我的主类中定义这些布局之后,当我点击第一个布局时,动画正在第二个布局上发生,即,当我点击 frame1 时,frame 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

0

找到了解决方案。将我的所有变量设为静态会产生问题。将它们恢复为私有可以解决问题。

于 2013-09-04T12:21:25.817 回答
0

在此处检查您的代码:

fl1.setOnClickListener(new OnClickListener() {

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

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

它应该是: fl1.setOnClickListener(new OnClickListener() {

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

        fl1.reset();
        fl1.animation();
    }
});
于 2013-09-02T10:09:48.013 回答