我正在开发一个简单的游戏,在一个活动中我有2个图像按钮:
<ImageButton
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/desc"
android:src="@drawable/img1"
android:onClick="btn1_click" />
<ImageButton
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/desc"
android:src="@drawable/img2"
android:onClick="btn2_click" />
单击按钮时,我会显示一些动画:
public void btn1_click(View v) {
v.startAnimation(animLeftTranslate);
}
public void btn2_click(View v) {
v.startAnimation(animRightTranslate);
}
当然,只有点击的按钮正在动画,但我想要做的是显示两个按钮的动画,当点击其中一个按钮时。我怎么能这样做?
答案 0 :(得分:1)
您可以在java代码中执行此操作,而不是使用android:onClick
:
ImageButton btn1 = (ImageButton) findViewById(R.id.bt1);
ImageButton btn2 = (ImageButton) findViewById(R.id.bt2);
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
btn1.startAnimation(animRightTranslate);
btn2.startAnimation(animRightTranslate);
}
};
btn1.setOnClickListener(listener);
btn2.setOnClickListener(listener);`
`
答案 1 :(得分:1)
您可以按照以下说明执行此操作。
<ImageButton
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/desc"
android:src="@drawable/img1"
android:onClick="btn_click" />
<ImageButton
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/desc"
android:src="@drawable/img2"
android:onClick="btn_click" />
在活动中,您必须使用
public void btn_click(View v) {
if(v.getId() == R.id.btn1)
v.startAnimation(animLeftTranslate);
else if(v.getId() == R.id.btn2)
v.startAnimation(animRightTranslate);
}
答案 2 :(得分:0)
您可以通过自己的方法完成此操作,即使用android:onClick
属性:
为ImageButton
分配一个功能,例如btns_clicked()
。因此,在您的按钮上添加android:onClick='btns_clicked'
。在那个函数中写:
public void btns_clicked(View v) {
View btn1 = findViewById(R.id.btn1);
View btn2 = findViewById(R.id.btn2);
btn1.startAnimation(animLeftTranslate);
btn2.startAnimation(animRightTranslate);
}