Ответ 1
От копания в библиотеке немного мне кажется, что вы не сможете получить плитку, не изменяя код (возможно, вам не нужно будет получать плитку, см. больше в опции 2), что можно сделать, хотя как это открытый исходный код, поэтому вы можете внести свои изменения локально и перейти оттуда.
Первый вариант:
Требуется первая модификация:
В https://github.com/moagrius/TileView/blob/master/src/com/qozix/tileview/detail/DetailManager.java
Добавьте следующий код:
public DetailLevel getCurrentDetailLevel() {
return currentDetailLevel;
}
В https://github.com/moagrius/TileView/blob/master/src/com/qozix/tileview/TileView.java
public DetailManager getDetailManager() {
return detailManager;
}
Это предоставляет метод, который вам нужен в DetailLevel, например.
public LinkedList<Tile> getIntersections()
Который вернет Плитки в вашем текущем порт представления, каждая плитка знает, что это границы слева/справа и сверху/снизу, поэтому вы можете прокручивать плитки и находить тот, на который вы нажали.
Второй вариант (рекомендуется по возможности):
Поскольку вы знаете, что для всех ваших вещей вы можете просто добавить HotSpots, в библиотеке кажется, что HotSpots - это исправления, которые поддерживают прослушиватели кликов.
Вы можете добавить HotSpot следующим образом:
HotSpot hotSpot = new HotSpot(left, top, right, bottom);
hotSpot.setHotSpotEventListener(this);
tileView.addHotSpot(hotSpot);
....
public void onHotSpotTap(HotSpot hotSpot, int x, int y){
Do your gui update using the supplied hotSpot above
}
Дополнительная информация: https://github.com/moagrius/TileView/blob/master/src/com/qozix/tileview/hotspots/HotSpot.java
Добавление круга
Библиотека поддерживает маркеры, вы можете просто добавить изображение с кругом в качестве маркера, например,
ImageView view = new ImageView (this);
view.setImageResource(circleId);
tileView.addMarker (view, tile.x, tile.y);