Мое приложение - это просто модифицированный ImageViewer с параметрами масштабирования и перетаскивания.Содержащий этот измененный Imageviewer, существует RelativeLayout (который я хочу использовать в качестве AbsoluteLayout).
Затем в макет можно добавить новые элементы, чтобы расположить их в определенных точках изображения.Позиция (x, y) в пикселях элементов находится в базе данных, поэтому я полагаю, что нет другого способа добавить их программно, а не с помощью XML.
Тогда положение этих элементов обновляется каждый разчто выполняется действие перетаскивания или масштабирования.
Проблема в том, что пиксели изображения каким-то образом не совпадают с пикселями в RelativeLayout!Таким образом, элементы «более или менее» расположены, но не в нужном месте (чем дальше от (0,0), тем больше ошибка).
Вещи, которые я уже пробовал:
Попробуйте различные преобразования, потому что, возможно, проблема связана с разницей плотностей между растровым изображением и макетом:
Resources r = getResources();
float x = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, r.getDisplayMetrics());
Попробуйте использовать разные методы вмакет для установки полей:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int) newPosition.x;
params.topMargin = (int) newPosition.y;
element.setLayoutParams(params);
Я также хотел использовать опции, доступные для RelativeLayout в XML, но я действительно не могу найти его программно, но я могу найти способ указатьЯ имею в виду измерение:
android:layout_marginLeft ="50px" // or "50mm", or dp, or inches...