2013-03-06 77 views
1

我們正在開發一個Android應用程序,其中要求單個圖像具有不同的導航,當點擊圖像的不同部分時。例如。一個建築物的完整圖像,並點擊不同的單位,我們想要顯示在公寓提供的設施(建築面積,房間數量,陽臺數量,露臺(如果五宮)等)。我們可以提供導航到單個圖像的不同部分

已經想好了以下兩種可能性,

  1. 切片的圖像放在一起(這樣它看起來像一個單一的圖像)佈局的xml,一旦用戶點擊它,用我們將圖像視圖id知道哪個部分被點擊。

  2. 在html中使用onclick事件切片圖像並放在一起(使其看起來像一個圖像),在webview中加載html,創建處理點擊的JavaScript類。

以上兩點很難,因爲零件不是合適的矩形或正方形。

ASP.Net具有用於此目的的ImageMap控件,我們在Android中有這種類型的東西嗎?

+0

你可以嘗試使用滑動視圖?https://github.com/chiuki/android-swipe-image-viewer和http://stackoverflow.com/questions/6994129/android-swipe-images – itsrajesh4uguys 2013-03-06 08:46:55

+0

創建一個類它具有Point和Bitmap成員值,根據圖像創建該類的許多實例。現在通過擴展View或SurfaceView來創建ImageView,並使用draw方法在畫布上繪製所有這些實例的Bitamp,這些實例基於View中的Point.Now onTouch方法獲取x和y座標並查找這些實例中哪些具有這點。您可以使用點和位圖大小形成實例的矩形。 – Triode 2013-03-06 08:48:06

回答

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以在onclick方法中執行相同的工作。通過這種方式,你可以將這樣的監聽器附加到任何視圖中... – Guian 2013-03-06 08:53:17

+0

嗨,你好,非常感謝你的回答。我的問題是,當我打電話給addHotSpot(Rect r)時,我將如何定義表示圖像不同部分的矩形的精確x,y和高度,寬度? – 2013-03-06 09:27:15

+0

呃...我提醒它應該設置爲任意值,根據您的圖像內容和熱點需要。在你的情況下,它應該是建築物圖片上顯示的平面的座標。我不知道我有什麼意思... – Guian 2013-03-06 09:36:47

0

您可以通過單擊ImageDiagram的onTouch event handler來做到這一點。

有關如何獲取觸摸事件座標的詳細信息,請參閱MotionEvent文檔。

+0

嗨馬特梅爾斯,感謝您的答案。我的問題是,如何定義當前拍攝的座標位於我的圖像的哪個部分下? – 2013-03-06 09:29:50

相關問題