2015-10-30 54 views

回答

1

在我看來@分形扳手的想法對你的情況非常好。下面列出了基本步驟。

  • 子類Android ImageView。例如,MultiRegionImageView
  • 重寫它的onTouchEvent方法。 (每當用戶觸摸視圖,此方法被稱爲)
  • 用戶觸摸圖像,從而onTouchEvent被調用,並提供準確的觸摸點(X,Y)。

  • 聲明另一個,其確定在該區域中的給定的點是方法或接口。例如,getRegionByPoint(int x, int y)

  • 如果您想強調的是區域邊界,您可以使用路徑。首先,應當定義路徑,並將它們保存到一個原始文件(XML,例如),則使用區ID,取它的路徑,最後繪製路徑在主圖像。

  • 對於在主圖像繪製路徑,你也應該重寫onDraw方法ImageView類和使用canvas.drawPath();


public class MultiRegionImageView extends ImageView { 
    RegionProvider mRegionProvider; 
    int mId = -1; 
    private Paint mPaint; 

    public MultiRegionImageView(Context context) { 
     super(context); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     mId = mRegionProvider.getRegionIdByPoint(event.getX(), event.getY()); 
     return super.onTouchEvent(event); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     if(mId != -1) { 
      canvas.drawPath(mRegionProvider.getRegionBoundaryPath(mId), mPaint); 
     } 
    } 

    public interface RegionProvider{ 
     int getRegionIdByPoint(float x, float y); 
     Path getRegionBoundaryPath(int id); 
    } 
} 
0

你應該只需要一個ImageView的顯示地圖區域。如果您覆蓋onTouchEvent(MotionEvent e),則可以獲取視圖中正在觸摸的位置。如果您在某種列表中存儲每個區域的位置和形狀,則可以檢查觸摸事件是否位於區域內(並顯示您需要的任何文本)。