我想将图像划分为子图像,当我点击图像的一部分时,会给出该区域的名称,例如,这是我的问题如何识别从图像中,或如何将图像分割成子图像,并用它在imageViewsandroid将图像划分为子图像,识别
谢谢你提前
我想将图像划分为子图像,当我点击图像的一部分时,会给出该区域的名称,例如,这是我的问题如何识别从图像中,或如何将图像分割成子图像,并用它在imageViewsandroid将图像划分为子图像,识别
谢谢你提前
在我看来@分形扳手的想法对你的情况非常好。下面列出了基本步骤。
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);
}
}
你应该只需要一个ImageView的显示地图区域。如果您覆盖onTouchEvent(MotionEvent e),则可以获取视图中正在触摸的位置。如果您在某种列表中存储每个区域的位置和形状,则可以检查触摸事件是否位于区域内(并显示您需要的任何文本)。