2013-03-06 2 views
1

Мы разрабатываем приложение для Android, в котором требуется, чтобы одно изображение имело другую навигацию при щелчке по различным частям изображения. Например. Полный образ здания и щелчок на разных квартирах мы хотим показать удобства, предлагаемые в квартире (площадь застройки, количество комнат, количество балконов, терраса (если пентхаус) и т. Д.).Можем ли мы предоставить навигацию к различным частям одного изображения.

Задумывался следующие две возможностей,

  1. Slice изображение и положить вместе (таким образом, чтобы она выглядела как единое изображение) в макете XML, когда пользователь нажимает на нее, с видом ид изображения мы знаете, какая часть нажата.

  2. Нарежьте изображения и соедините их (в виде одного изображения) в html с событием onclick, загрузите html в webview, создайте класс JavaScript, который обрабатывает клики.

Свыше двух это сложно, потому что части не имеют правильного прямоугольника или квадратной формы.

У ASP.Net есть контроль ImageMap для этой цели, есть ли у нас что-нибудь в Android?

+0

вы можете попробовать со взглядами swipe? Https: //github.com/chiuki/android-swipe-image-viewer и http://stackoverflow.com/questions/6994129/android-swipe-images – itsrajesh4uguys

+0

Создать класс который имеет значения элемента Point и Bitmap, создает столько экземпляров этого класса, что соответствует изображению, что у вас есть. Теперь создайте свой ImageView, расширив View или SurfaceView, и на методе draw вы нарисуете все эти экземпляры. Bitamp поверх холста на основе метода Point.Now onTouch в вашем представлении получите координату x и y и найдите, какой из этих экземпляров имеет эта точка. Вы можете сформировать прямоугольник экземпляра, используя размер точки и растрового изображения. – Triode

ответ

1

Там нет такого компонента, чтобы сделать это в Android, но вы можете легко создать один:

public class ImageMap extends ImageView implements onClickListener 
{ 

    List<Rect> hotspot; 

    public ImageMap(Context c) 
    { 
    super(c); 
    hotspot = new List<Rect>(); 
    setOnClickListener(this); 
    } 

public void addHotSpot(Rect r) 
{ 
    hotspots.add(r); 
} 


    public void onClick(Event e) 
    { 
    int currentPosition = 0; 
    for(Rect spot : hotspot){ 
     if(spot.contains(e.getX(), e.getY())) 
      triggerClickInHotSpotAtPos(currentPosition); 
     currentPosition ++; 
    } 

    } 

    public void triggerHotSpot(int hotspotIndex) 
    { 
    //TODO do something useful like calling listener for this given hotspot etc ... 
    } 
} 

быть в курсе, что это не законченная работа, но больше как псевдо-код, то важно, вы получили идея.

+0

Чтобы быть более полным и гибким, вы можете даже расширять только onClickistener, чтобы выполнять ту же работу в onclickmethod. Таким образом, вы можете присоединить такого слушателя к любым представлениям ... – Guian

+0

Привет, ребята, большое спасибо за ответ. мой вопрос в том, когда я вызываю addHotSpot (Rect r), как бы я определял точную длину x, y и height, ширину прямоугольников, представляющих разные части моего изображения? –

+0

хорошо ... Я чувствую, что он должен быть установлен как произвольные значения, на основе вашего содержимого изображения и горячей точки, в которой вы нуждаетесь. В вашем случае это должны быть координаты отображаемой квартиры на фотографии здания. Я не уверен, что получил то, что вы имели в виду ... – Guian

0

Вы можете сделать это с помощью одного ImageView, нажав на его onTouch event handler.

См. Документацию MotionEvent относительно особенностей получения координат события касания.

+0

Привет, Мэтт Майерс, спасибо за ответ. Мой вопрос в том, как бы определить, какие текущие согласованные координаты попадают под какую часть моего изображения? –

Смежные вопросы