У меня возникла проблема в последнее время Android: поворот изображения вокруг центра , который был решен с помощью Unconn.
Однако, оказывается, что решение - так же, как ион работает - имеет гораздо худшую производительность, чем материал RotateAnimation.
Что у меня есть на данный момент: 1) FrameLayout с двумя ImageViews, расположенными друг над другом 2) SensorEventHandler, который перемещает нижнее представлениевокруг в соответствии с измеренным курсом.Это работает приемлемо, если я использую RotateAnimation
. Я хотел ускорить его и немного сгладить анимацию, но потерпел неудачу.Вот текущее решение: 1) SurfaceView с отдельным потоком, управляющий отрисовкой слоев 2) Без выполнения приведенного ниже кода поток может достигать около 50 кадров в секунду.3) При показанном ниже коде частота кадров снижается до 5ps и менее, так что это больше не является чем-то очень плавным ...
Вот код:
mRadar: Растровое изображение, показывающее "radar ", загружено из ресурса ранее. mHeading: текущий курс, взятый с датчиков в градусах. mRadarW, mRadarH: начальная ширина / высота изображения, определенная при создании.
Matrix m = new Matrix();
m.setRotate(mHeading, mRadarW/2, mRadarH/2);
Bitmap rotated_radar = Bitmap.createBitmap(mRadar, 0, 0, mRadarW, mRadarH, m, true);
canvas.drawBitmap(rotated_radar, (mRadarW - rotated_radar.getWidth())/2, (mRadarH - rotated_radar.getHeight())/2, null);
canvas.drawBitmap(mRadar, 0, 0, null);
Является ли материал Matrix / drawBitmap, известныйвыполнять не так хорошо, на самом деле хуже, чем RotateAnimation?Если нет возможности использовать это: Какие варианты вы могли бы предложить?Хотя RotateAnimation сейчас будет работать, мне нужно будет составить гораздо более сложное изображение, за до Мне нужно будет перейти на RotateAnimation, поэтому, боюсь, я снова проиграю с drawBitmap и друзьями ...
О, я скучаю по CALayers:)