我有一个自定义视图,其中添加了一个名为moveView的方法,该方法在调用时将视图的位置更改为Y方向的X像素。现在我希望这些视图中的6个遍布整个屏幕并且不断移动。
我有什么:
Handler
(我需要用于UI更新吗?)ApplyMoveRunnable
(实现Runnable。构造函数接收自定义视图,要移动的像素数量以及移动方向)MoveCalcRunnable
(每个帖子一个。实现Runnable)我尝试了什么:
我尝试创建我的6个视图,然后创建6个线程。这些线程中的每一个'MoveCalcRunnable
都在各自的视图中调用moveView()方法。此moveView()方法计算视图将移动的像素数量以及移动的方向,并将此信息发送到ApplyMoveRunnable
,然后调用handler.post(applyMoveRunnable)
。
简单地说,会发生什么:
ApplyMoveRunnable applyMoveRunnable
Handler handler
。MoveCalcRunnable
。MoveCalcRunnable
。当我运行它时,首先我看到我的6个视图,然后一个移动而没有其他任何事情发生。
以下是我MoveCalcRunnable
的每一个的run()方法:
@Override
public void run() {
Log.e(tag, "Thread locking directionAmountRunnable.");
synchronized (applyMoveRunnable) {
Log.e(tag, "Moving view.");
myView.moveView();
}
}
任何人都可以帮我解决这个问题吗?或者建议采用更好,更简单和/或更有效的方法来做到这一点?