我创建了一个包含多个视图的自定义framelayout。单击布局时,会在布局内完成一些动画。我在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>
现在奇怪的行为是,在我的主类中定义这些布局后,当我点击第一个布局时,动画发生在第二个布局上,即,当我点击第1帧时,第2帧是动画。单击时第二个布局响应正常。所以最新定义的布局是动画的。首先定义的布局没有动画。
这就是我在主类中定义布局的方法:
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();
}
});
有人可以解释为什么这些布局会以这种方式表现吗? 提前谢谢。
答案 0 :(得分: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();
}
});
答案 1 :(得分:0)
找到解决方案。将所有变量设置为静态会导致问题。将它们转换为私有可以解决问题。