У меня есть поток, в котором я получаю пакеты со значением, которое идет от 45,0 до 0,0, оно постоянно уменьшается (это таймер)
Затем я рисую прямоугольник (длина основана на этом значении) И длина прямоугольникадрожит (кажется, что точно каждую секунду)
Это на моем телефоне, но я попробую сделать GIF сейчас. По сути, он «скачет» к предыдущему значению, которое было как полсекунды раньше, а затем возвращаетсяк норме
пакеты отправляются с задержкой 15 мс между ними, я пытался увеличить / уменьшить задержку, даже если я отправляю их с задержкой почти 500 мс, она все еще дрожит каждую секунду
// its this easy, but i dont get where the jittering comes from
if (UdpClientThread.bomb != null) {
float curExplode = UdpClientThread.bomb.explode;
canvas.drawRect(0, 0, 24 * curExplode, 200, paintexplode);
}
postInvalidate();
вот как я получаю curExplode
...
packet = new DatagramPacket(msg, msg.length);
socket.receive(packet);
String line = new String(packet.getData(), 0, packet.getLength());
if (line.length() > 0 && line.charAt(0) == 'b') {
String[] bomb_data = line.split(Pattern.quote("|"));
if (bomb_data.length == 4) {
int cur_sq = Integer.parseInt(bomb_data[1]);
if (cur_sq > prev_sq) {
bomb = new Bomb(Float.parseFloat(bomb_data[2]), Float.parseFloat(bomb_data[3]));
prev_sq = cur_sq;
}
}
...
Я хочу, чтобы он был плавным: (
РЕДАКТИРОВАТЬ:
видео, демонстрирующее проблему (стало еще хуже из-зазапись экрана; игнорируйте цвета, это мой рендерер)
https://youtu.be/tvOYI7Dgu74
EDIT2:
я добавил порядковый номер в пакеты UDP, чтобы убедиться, что это не старое значениеобращается
эта проблема все еще существует