gpt4 book ai didi

java - Android onClick启动的两个动画,应该只启动一个

转载 作者:行者123 更新时间:2023-12-02 07:18:25 25 4
gpt4 key购买 nike

根据我首先单击的动画,第二个动画将始终引发第一个动画。我不知道我做错了什么。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class Test extends Activity {
ImageView img_left;
ImageView img_right;
Button left;
Button right;
TranslateAnimation moveup;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);

moveup = new TranslateAnimation(0, 0, 0, -900);
moveup.setDuration(2000);
moveup.setFillAfter(true);
left = (Button) findViewById(R.id.left);
right = (Button) findViewById(R.id.right);
img_left = (ImageView) findViewById(R.id.image_left);
img_right = (ImageView) findViewById(R.id.image_right);
right.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
img_right.startAnimation(moveup);
Toast.makeText(getApplicationContext(), "right", Toast.LENGTH_LONG).show();
}

});

left.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
img_left.startAnimation(moveup);
Toast.makeText(getApplicationContext(), "left", Toast.LENGTH_LONG).show();
}

});

}

}

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
tools:context=".First" >

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" >

<Button
android:id="@+id/left"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#0000EE"
android:text="" />

<Button
android:id="@+id/right"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#0000EE"
android:text="" />
</LinearLayout>

<ImageView
android:id="@+id/image_left"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:src="@drawable/cue1" />

<ImageView
android:id="@+id/image_right"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:src="@drawable/cue2" />

</RelativeLayout>

最佳答案

创建两个具有相同属性的不同 Animation 对象,一个用于左侧,一个用于右侧,或者在开始之前在另一个 View 上调用 setAnimation(null)它。换句话说:

    right.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
img_left.setAnimation(null);
img_right.startAnimation(moveup);
Toast.makeText(getApplicationContext(), "right", Toast.LENGTH_LONG).show();
}

});

left.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
img_right.setAnimation(null);
img_left.startAnimation(moveup);
Toast.makeText(getApplicationContext(), "left", Toast.LENGTH_LONG).show();
}

});
当调用 setAnimation()startAnimation() 时,

Animation 对象会附加到其 View 。通过启动附加到同一 Animation 实例的两个 View ,动画有可能在运行时影响两个 View 的绘制。 View 仅在失效时关注动画的当前状态,因此这并不一定意味着它们总是一起动画。但是,如果您的代码遇到在 Animation 运行时两个 ImageView 实例都无效的情况,它们都会对翻译做出响应。

关于java - Android onClick启动的两个动画,应该只启动一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com