Извините, что я noob Я читал бесчисленные учебники о создании простого таймера и задавался вопросом, почему это не работает, пока я не заметил, что это цикл while, вызывающий проблему oO, я удалил его, а затем он работает, но только 1 раз мне нужно использовать цикл, хотя так движение заканчивается: CAndroid postDelayed работает, но не может поместить его в цикл?
Heres код:
old_x координата из ImageView и new_x от onTouch события, может быть проблема, потому что я литье их int? Я не знаю, что мне нужно сделать, так это работает, пожалуйста, помогите O:
while(old_x != new_x)
{
timedMoveIV(100);
old_x = (int)img.getX();
}
Это вызывает этот метод, который работает, если я делаю это без петли.
public void timedMoveIV(int time_ms)
{
//sleep for time_ms milliseconds
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
if(new_x > img.getX())
{
img.setX(img.getX() + 1);
}
else
{
img.setX(img.getX() - 1);
}
}
}, time_ms);
}
Отлично! Я не могу сказать, что вы достаточно часами сидели на этой вещи (хотя это было так просто)! У меня остался небольшой вопрос. Я должен сделать time_ms финальным int вместо int else, который он не примет. Есть ли вообще избежать этого, кроме создания публичной переменной? –
Ну, если вы все равно будете использовать постоянную задержку, вы можете сделать ее окончательной. Я даже предлагаю пойти с последним статическим членом. Это лучше, чем иметь магические числа, плавающие вокруг. – Geobits