Android。在多个视图上应用自定义动画时出现问题
Android. Problems when applying custom animation on multiple views
我已经编写了自己的摇动动画来摇动 EditText
s。当我点击 "SHAKE USER" 时,第一个 EditText
震动。当我点击 "SHAKE PASS" 时,两个 EditText
一起摇晃,这是不应该发生的。附上截图。Screenshot
这是动画文件
shake.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="0%p"
android:toXDelta="2%"
android:repeatCount="5"
android:repeatMode="reverse"
android:interpolator="@android:anim/linear_interpolator"
android:duration="50" />
</set>
这是 Java 代码片段
Animation shake = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.shake);
findViewById(R.id.b1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shakeView(etUser);
}
});
findViewById(R.id.b2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shakeView(etPass);
}
});
private void shakeView(final View view) {
new Thread(new Runnable() {
@Override
public void run() {
view.post(new Runnable() {
@Override
public void run() {
view.startAnimation(shake);
}
});
}
}).start();
}
谢谢!
看来我自己找到了解决办法。我在动画结束后调用了 view.clearAnimation()
,一切正常
我已经编写了自己的摇动动画来摇动 EditText
s。当我点击 "SHAKE USER" 时,第一个 EditText
震动。当我点击 "SHAKE PASS" 时,两个 EditText
一起摇晃,这是不应该发生的。附上截图。Screenshot
这是动画文件
shake.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="0%p"
android:toXDelta="2%"
android:repeatCount="5"
android:repeatMode="reverse"
android:interpolator="@android:anim/linear_interpolator"
android:duration="50" />
</set>
这是 Java 代码片段
Animation shake = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.shake);
findViewById(R.id.b1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shakeView(etUser);
}
});
findViewById(R.id.b2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shakeView(etPass);
}
});
private void shakeView(final View view) {
new Thread(new Runnable() {
@Override
public void run() {
view.post(new Runnable() {
@Override
public void run() {
view.startAnimation(shake);
}
});
}
}).start();
}
谢谢!
看来我自己找到了解决办法。我在动画结束后调用了 view.clearAnimation()
,一切正常