我想将图像划分为子图像,当我单击图像的某一部分时,将给出该区域的名称,例如,这是我的问题,如何从图像中识别区域,或者如何将图像划分为子图像,并在imageViews中使用它。
预先谢谢你
发布于 2015-10-30 20:28:29
在我看来,@压裂扳手的想法对你的案子很有好处。下面列出了基本步骤。
ImageView
。例如,MultiRegionImageView
。onTouchEvent
方法。(每当用户接触视图时,都会调用此方法)onTouchEvent
并提供确切的触点(x,y)。getRegionByPoint(int x, int y)
ImageView
类的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);
}
}
发布于 2015-10-30 20:00:56
您应该只需要一个ImageView来显示地图。如果您重写onTouchEvent(MotionEvent e),您可以获得视图中正在被触摸的位置。如果将每个区域的位置和形状存储在某种类型的列表中,则可以检查触摸事件是否在区域内(并显示所需的任何文本)。
https://stackoverflow.com/questions/33443515
复制相似问题