从按钮的onclick事件访问另一个视图

时间:2014-04-21 13:44:42

标签: android android-animation

我正在开发一个简单的游戏,在一个活动中我有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);
}

当然,只有点击的按钮正在动画,但我想要做的是显示两个按钮的动画,当点击其中一个按钮时。我怎么能这样做?

3 个答案:

答案 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);
}