2015-10-30 14 views
0

Я хочу разделить изображение на вспомогательные изображения, и когда я нажму на часть изображения, дайте мне название региона, например, это мой вопрос, как распознать область с изображения, или как разделить изображение на подизображения и использовать его в imageViewsandroid делить изображение на вспомогательные изображения, распознавая

и спасибо заранее

ответ

1

На мой взгляд, идея фрактальвальдера неплоха для вашего дела. Основные шаги перечислены ниже.

  • Подкласс Android ImageView. Например, MultiRegionImageView.
  • Переопределить его метод onTouchEvent. (Этот метод вызывается всякий раз, когда пользователь касается представления)
  • Пользователь обращается к изображению, и таким образом onTouchEvent вызывается и обеспечивает точную точку касания (x, y).

  • Объявите другой способ или интерфейс, который определяет, в какой области находится данная точка. Например, getRegionByPoint(int x, int y)

  • Если вы хотите выделить эти границы региона, вы можете использовать пути. Во-первых, вы должны определить пути и сохранить их в необработанный файл (например, XML), затем использовать идентификатор региона, выбрать его путь и, наконец, нарисовать этот путь по основному изображению.

  • Для рисования пути поверх основного изображения, вы должны также переопределить 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), вы можете получить позицию, которая затрагивается в представлении. Если вы сохраняете позицию и форму каждой области в каком-то списке, вы можете проверить, находится ли событие касания в пределах региона (и отображать любой текст, который вам нужен).