В настоящее время мы создаем приложение с Xamarin, в котором мы хотим визуализировать уровень отклонения от нейтрального значения. Текущее состояние будет обновляться каждые 80-150 миллисекунд.Ищете эквивалент UIElement.RenderTransform для визуализации уровня отклонения в Android
В основном мы ищем что-то вроде этого:
----''''' ---- (отклонение к положительным)
---- ----- - нет --- (нет отклонения)
---- ---- ___ (отклонение к минусу)
линия на наружных собирается оставаться в том же положении, в то время как линия в середине двигается вверх и вниз, чтобы показать текущее отклонение.
Для WP это так же просто, как рисование 3 тонких прямоугольников в строке и перевод значений по оси Y в средний прямоугольник через Rectangle.RenderTransform.
В Android мы используем LevelListDrawable связать несколько Png на определенный диапазон значений и установите текущий уровень с помощью кода: Это LevelList.xml:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/down"
android:minLevel="0"
android:maxLevel="33" />
<item
android:drawable="@drawable/neutral"
android:minLevel="34"
android:maxLevel="66" />
<item
android:drawable="@drawable/top"
android:minLevel="67"
android:maxLevel="100" />
</level-list>
вниз, нейтральной и сверху обратитесь к а. png, показывающее текущее состояние. (Там будут около 20 различных состояний)
LevelList.xml устанавливается как ImageDrawable для ImageView, который используется для отображения текущего состояния:
_graphicsView = FindViewById<ImageView>(Resource.Id.GraphicsView);
var drawable = Resources.GetDrawable(Resource.Drawable.LevelList);
_graphicsView.SetImageDrawable(drawable);
Это метод обновления в MainActivity:
public void UpdateDeviation(int deviation)
{
_graphicsView.SetImageLevel(deviation);
}
Наш нынешний подход работает, но мы не счастливы о том, чтобы хранить множество PNG-х для каждого государства. Можете ли вы придумать лучшее решение для Android в отношении скорости обновления и размера APK?
Очень хорошее решение. Большое спасибо за обширный ответ! –