关于TranslateAnimation动画的一个小疑点

关于TranslateAnimation动画的一个小问题package com.example.testpicimport android.app.Activityimpor

关于TranslateAnimation动画的一个小问题


package com.example.testpic;

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

public class MainActivity extends Activity {
ImageView image;
Button start;
Button cancel;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

image = (ImageView) findViewById(R.id.main_img);
start = (Button) findViewById(R.id.main_start);
cancel = (Button) findViewById(R.id.main_cancel);

/** 设置位移动画 向右位移150 */
final TranslateAnimation animation = new TranslateAnimation(0, 150, 0,
0);
animation.setDuration(2000);// 设置动画持续时间
animation.setRepeatCount(2);// 设置重复次数
animation.setRepeatMode(Animation.REVERSE);// 设置反方向执行

start.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
/** 开始动画 */
image.setAnimation(animation);
animation.startNow();
}
});

cancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
/** 结束动画 */
animation.cancel();
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}


布局文件:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView 
        android:id="@+id/main_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/center_qq"
        android:layout_gravity="center"
        />

    <Button
        android:id="@+id/main_start"
        android:layout_width="60dp"
        android:layout_height="40dp"
        android:layout_below="@id/main_img"
        android:text="开始"
        />
    
     <Button
        android:id="@+id/main_cancel"
        android:layout_width="60dp"
        android:layout_height="40dp"
        android:layout_below="@id/main_start"
        android:text="停止"
        />
</RelativeLayout>

我想点击按钮的时候放一个简单的动画,但是点击没反应,如果我把动画移动出来,不放在按钮的onclick事件里面,就是正常的,不知为什么
[解决办法]
把setAnimation换成startAnimation
[解决办法]
引用:
Quote: 引用:

把setAnimation换成startAnimation

恩,可以了,不过为什么呢,设置动画不能开启动画吗?那为什么放在onclick外面就可以用set,而放onclick里面就必须用start

Start是启用线程,每个activty都是异步加载,用Strat就是和activity的一起加载,而你要的点击后才启动,那就是set了,,,
[解决办法]
activity 是主线程自动开启,在子线程中需要start