我不是英语母语人士。 如果你不明白我在写什么,请告诉我。
这是个问题。
我想在MainActivity中控制startColorAnimation
。
但是,我正在使用Multithread。
这意味着我正在使用Application.class。
此Application类将数据[id]发送到MainActivity(和startColorAnimation)。
如果我使用Multithread,我必须使用“handler”。 但是,我无法理解如何编写代码。
请告诉我如何编写处理程序(和其他人)。
此处startColorAnimation
中的MainActivity
。
public void startColorAnimation(int id){
if (id == mode) return;
if(COLOR_START.length <= id || COLOR_END.length <= id ) return;
mode = id;
int colorStart = COLOR_START[id];
int colorEnd = COLOR_END[id];
int setDuration = PATTERN[id];
ValueAnimator colorAnim = ObjectAnimator.ofInt(image, "backgroundColor", colorStart, colorEnd);
colorAnim.setDuration(1000);
colorAnim.setEvaluator(new ArgbEvaluator());
colorAnim.setRepeatCount(1);
colorAnim.start();
}
答案 0 :(得分:0)
看起来你试图在线程上做GUI的东西会失败,你可以使用这样的东西:
我正在使用runOnUiThread,它将在GUI线程上执行动画,并且应该解决您的问题,简单地用活动名称替换“MainActivity”。
public void startColorAnimation (int id) {
MainActivity.this.runOnUiThread (new Runnable () {
public void run () {
if (id == mode) return;
if (COLOR_START.length <= id || COLOR_END.length <= id) return;
mode = id;
int colorStart = COLOR_START[id];
int colorEnd = COLOR_END[id];
int setDuration = PATTERN[id];
ValueAnimator colorAnim = ObjectAnimator.ofInt (image, "backgroundColor", colorStart, colorEnd);
colorAnim.setDuration (1000);
colorAnim.setEvaluator (new ArgbEvaluator ());
colorAnim.setRepeatCount (1);
colorAnim.start ();
}
});
}