Я делаю пользовательскую 2D-карту, заполненную ImageViews, используя этот макет:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.nkraft.mobiletomblocator.ZoomableScrollView2D
android:id="@+id/scrollView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none" >
<com.nkraft.mobiletomblocator.CustomGridLayout
android:id="@+id/map_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffdedbba" >
<!-- filling this up at run time, maybe a ~300x100 cells -->
</com.nkraft.mobiletomblocator.CustomGridLayout>
</com.nkraft.mobiletomblocator.ZoomableScrollView2D>
<!-- Don't mind below this -->
<LinearLayout
android:id="@+id/popupDialogParent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:padding="30dp" >
<include layout="@layout/custom_toast"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
Где:
ZoomableScrollView2D
- это двумерный скроллер, который может прокручиваться в обоих направлениях одновременно, и где я прикрепил свой эффект масштабирования, я нашел ЗДЕСЬCustomGridLayout
— это обычныйGridLayout
, который я переопределяюonDraw()
, чтобы рисовать другие вещи.
После того, как я все это настроил, я получаю такой неожиданный вывод:
перед масштабированием:
после увеличения:
Как сохранить границы отсечения этого CustomGridLayout
после масштабирования? Вы знаете, тот, который можно было бы ожидать при масштабировании.
canvas.scale()
илиcanvas.[pre|post]Scale()
. В основном это зависит от того, насколько легко вы можете получить доступ к холсту, на котором рисуете. - person WarrenFaith   schedule 01.10.2014OutOfMemoryException
, поэтому масштабирование каждой ячейки для меня не подходит. Ну для холста сеточного макета я еще не пробовал. Хм, будет лиView
по-прежнему кликабельно, если я масштабирую их с помощью подхода холста? - person mr5   schedule 01.10.2014