поэтому сначала позвольте мне дать вам некоторый контекст того, что я пытаюсь сделать и что я пробовал :) У меня есть до десяти представлений, которые мне нужно постоянно перемещать справа налево. Как только один вид покидает экран, справа появляется другой. Все виды должны быть сенсорными. Я смог добиться этого несколькими способами, но они не были гладкими (некоторые заикались, другие, казалось, прыгали, когда приложение замедлялось). Все эти представления находятся в группе представлений, и я использую их повторно (всего 10 представлений).
Вот способы, которые я пробовал:
- Изменение полей представлений (обновляется с помощью обработчика)
- Вызов View.layout(l,t,r,b) (обновляется с помощью обработчика)
- Получение View.getDrawingCache() и рисование его на SurfaceView (также с помощью обработчика)
- Использование ObjectAnimator (nineoldandroids)
Ни один из них не работал очень плавно (виды останавливались на долю секунды и прыгали), но лучше всего использовалась анимация. Сначала я использовал обычный translateAnimation из Android, но, конечно, это не сенсорно. Я попытался получить матрицу анимации (я не знаю, делаю ли я что-то не так), но он не возвращает верхнюю/левую часть представления:
Transformation outTransformation = new Transformation();
getTransformation(System.currentTimeMillis(), outTransformation);
Matrix transformationMatrix = outTransformation.getMatrix();
float[] matrixValues = new float[9];
transformationMatrix.getValues(matrixValues);
float transX = matrixValues[2];
float transY = matrixValues[5];
Итак, теперь мой вопрос.
Лучший результат, который я получил, был с использованием ObjectAnimator.
mAnimation[index] = ObjectAnimator.ofFloat(mViews[index], "translationX", -left);
mAnimation[index].setDuration(time);
mAnimation[index].setInterpolator(new LinearInterpolator());
mAnimation[index].addListener(mAnimatorListener);
mAnimation[index].start();
У меня были прикосновения с помощью ObjectAnimator, но только с Android 3.0 и выше (не 2.3).
Кто-нибудь знает, почему или как я могу заставить сенсоры работать на Android 2.3? Или есть лучший способ переместить все эти представления? Что я должен помнить или делать при перемещении/анимации большого количества представлений?
Есть ли у вас какие-либо идеи, как я могу улучшить «плавность» (заикания или остановки на доли секунды и прыжки, чтобы догнать) использования любого из других вариантов, упомянутых выше?
Лучше ли использовать ViewGroup? Извините за столько вопросов.
Любые мысли, идеи или комментарии будут очень полезны и очень ценны :) И если у вас есть дополнительные вопросы или вы что-то не понимаете, дайте мне знать.