У меня есть пользовательское представление, которое имитирует вращение шара с некоторым текстом.
Для этого мое пользовательское представление (которое расширяет RelativeLayout) переопределяет метод onDraw:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mCirclePath.reset();
mCirclePath.addCircle(canvas.getWidth() / 2, canvas.getHeight() / 2, mRadious, Path.Direction.CW);
canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight() / 2, mRadious, mBackGroundPaint);
canvas.drawPath(mCirclePath, mBackGroundPaint);
canvas.clipPath(mCirclePath);
canvas.drawColor(Color.TRANSPARENT);
}
Таким образом, я обрезаю все, что находится за пределами растровой окружности, что позволяет мне перемещать текст внутри макета.this + вращение текста имитирует вращение шара в фальшивом 3d.
Мое решение отлично работает в Android 4,5,6 и 9, но почему-то оно не работает в 7 и 8.
ЗдесьЭто очень упрощенная версия моей анимации с частью поворота вида:
ObjectAnimator anim = ObjectAnimator.ofFloat(this, View.ROTATION, 0, 190);
anim.setDuration(6000);
В Android 7 и 8 кажется, что растровое изображение и текстовое представление вращаются, но контейнер остается статичным.это прекрасно работает в других версиях Android ...
Я уже пытался переместить положение камеры без успеха.
Edit1: Так что после вознив то время как я обнаружил, что виновником является clipPath, каким-то образом это конфликтует с вращением аниматора объектов.«Решение», которое я нашел на данный момент, - установить LayerType в View.LAYER_TYPE_SOFTWARE.Но я не доволен этим решением, потому что, поскольку это составное представление, и в то же время я анимирую текст, слой будет продолжать аннулировать ...