gpt4 book ai didi

android - 为什么从事件调用时 view.startAnimation(animation) 不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:36 28 4
gpt4 key购买 nike

我创建了一个自定义 View ,它使用一个虚拟的 TranslateAnimation 来设置一些布局属性。我使用 Interpolator 计算高度,并将其应用于 TranslateAnimation 的 applyTransformation() 方法内的 View 。

如果我从我的 Activity 触发动画,这会工作得很好。

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

Log.i("test", "onCreate()");
view.expand(); // This method starts the animation
}

当我尝试使用触摸事件执行相同操作时,没有任何反应。

@Override
// This method is touch handler of the View itself
public boolean onTouch(View v, MotionEvent event) {
Log.i("test", "onTouch()");
this.expand(); // onTouch is part of the view itself and calls expand() directly
return true;
}

我的扩展方法如下所示:

public void expand() {
Log.i("test", "Expand!");

TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 0) {

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Log.i("test", "applyTransformation()");

super.applyTransformation(interpolatedTime, t);

// do something
}

};
anim.setDuration(500);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
this.someInternalView.startAnimation(anim);
}

创建 Activity 后,Logcat 显示“onCreate()”在我的触摸事件中,Logcat 显示“onTouch()”在 expand() 方法内部,Logcat 显示“Expand!” - 从 Activity 或事件中调用。

在 applyTransformation() 方法中,Logcat 显示“applyTransformation()”——但是!仅当从 onCreate() 调用 expand() 时。尝试从事件开始动画的任何尝试都失败了。

这在我看来像是某种线程问题。这可能吗?我有什么想念的吗?据我从其他帖子中看到的,从事件开始动画应该没有任何问题......

提前致谢!

最佳答案

试试这个:

public void expand() {
Log.i("test", "Expand!");
runOnUiThread(new Runnable() {
@Override
public void run() {
TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 0) {

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Log.i("test", "applyTransformation()");

super.applyTransformation(interpolatedTime, t);

// do something
}

};
anim.setDuration(500);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
this.someInternalView.startAnimation(anim);
}
});
}

关于android - 为什么从事件调用时 view.startAnimation(animation) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7600814/

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