Поместить изображение в координаты Android - PullRequest
7 голосов
/ 11 июня 2010

У меня есть программа, в которой я хотел бы разместить изображение в координатах события касания.У меня есть координаты, теперь мне просто нужна помощь с размещением изображения там.Я буду использовать Drawable.

Редактировать ** Я также хочу наложить его на другое изображение.Я не могу найти какую-либо документацию по этому вопросу.Я думаю, что это должно быть легко.

Кто-нибудь может мне помочь?

РЕДАКТИРОВАТЬ **** Понятно, теперь мне просто нужно выяснить, как получить середину изображения наточка касания, а не верхний левый угол:

 final View touchView2 = findViewById(R.id.ImageView02);
    touchView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.v("x,y",event.getY()+","+event.getX());
            touchView2.bringToFront();
            int y = (int)event.getY();
            int x = (int)event.getX();

            touchView2.layout(x, y, x+48, y+48);
                return true;
        }
    });

Ответы [ 3 ]

4 голосов
/ 05 января 2013

Поместите нужное изображение сверху в xml вашего приложения.установить его невидимым или пропавшим ...

заменить:

 final View touchView2 = findViewById(R.id.ImageView02);

перед конструктором классов:

ImageView touchView2;

и в методе конструктора (onCreate)

touchView2 = (ImageView) findViewById(R.id.ImageView02);

Теперь настройте onTouchEventListener, получая все прикосновения на экране.Если эти координаты находятся в позиции, которая вам нравится, вызовите метод placeImage с нажатой координатой X и Y.этот метод находится вне конструктора класса (onCreate), поэтому первый метод ниже должен быть правильным:

@Override
public boolean onTouchEvent(MotionEvent event) {
    super.onTouchEvent(event);
    int eventAction = event.getAction();
    switch(eventAction) {
        case MotionEvent.ACTION_DOWN:
            float TouchX = event.getX();
            float TouchY = event.getY();
            placeImage(TouchX, TouchY);
            break;
    }        
    return true;
}

теперь метод placeImage:

private void placeImage(float X, float Y) {
    int touchX = (int) X;
    int touchY = (int) Y;

    // placing at bottom right of touch
    touchView2.layout(touchX, touchY, touchX+48, touchY+48);

    //placing at center of touch
    int viewWidth = touchView2.getWidth();
    int viewHeight = touchView2.getHeight();
    viewWidth = viewWidth / 2;
    viewHeight = viewHeight / 2;

    touchView2.layout(touchX - viewWidth, touchY - viewHeight, touchX + viewWidth, touchY + viewHeight);
}

Это должен быть ваш ответ ...теперь вам нужно только сделать touchView видимым:

touchView2.setVisibility(0);
0 голосов
/ 28 октября 2012

Чтобы разместить изображение в определенных координатах, вам нужно нарисовать изображение на холсте. Чтобы получить координаты события касания, используйте следующий код:

@Override
public void onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_MOVE) {
        mTouchX = event.getX();
        mTouchY = event.getY();//stores touch event
    } else {
        mTouchX = -1;
        mTouchY = -1;
    }
    super.onTouchEvent(event);
}
0 голосов
/ 11 июня 2010
Drawable recycle_bin = context.getResources().getDrawable(android.R.drawable.ic_menu_delete);
int w = recycle_bin.getIntrinsicWidth();
int h = recycle_bin.getIntrinsicHeight();
int x = getWidth()/2 - w/2;
int y = getHeight() - h - 5;

recycle_bin.setBounds( x, y, x + w, y + h );
recycle_bin.draw( canvas );

вот так я рисую значок корзины в центре внизу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...