Как переместить изображение на макете XML, когда пользователь на сенсорном мероприятии?

StackOverflow https://stackoverflow.com//questions/9643944

Вопрос

Я внедрил приложение с изображением.В моем приложении я использовал на изображении, когда когда-либо прикосновение к изображению, я хотел бы переместить изображение вместе со своим пальцем.Я реализовал свое приложение следующим образом:

((ImageView)findViewById(R.id.imageView1)).setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event) {
      switch (event.getAction()) {
         case MotionEvent.ACTION_MOVE:
            //I would like to Move image along with user finger touch code
            break;

         default:
            break;
      }
      return false;
   }
});
.

из вышеуказанного кода, я не могу перемещать изображение вместе с пользовательским пальцем.

Это было полезно?

Решение

Есть образец для достижения этого см.:

http://blahti.wordpress.com/2011/ 01/17 / Moving-View-Part-2 /

Другие советы

Просто предложение, это работает для меня:

Вернуть false to true of ontouch () метода

Я использую этот код для достижения этого

package mani.droid.touchdrag;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

public class MainActivity extends Activity {

Bitmap img;
float x;
float y;
boolean isStarted = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    img = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

    setContentView(new MyScreen(this));
}

public class MyScreen extends View {

    Context context;

    public MyScreen(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        this.context = context;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        switch(event.getAction())
        {
            case MotionEvent.ACTION_DOWN:
                float xdiff = Math.abs( x - event.getX());
                float ydiff =  Math.abs( y - event.getY());
                if( xdiff < 23 || ydiff < 23 ){
                    isStarted = true;
                }
                break;

            case MotionEvent.ACTION_MOVE:
                if(isStarted)
                {
                    x = event.getX() - img.getWidth()/2;
                    y = event.getY() - img.getHeight()/2;
                    Log.v("X:" + x, "Y: " + y);
                    this.invalidate();
                }
                break;

            case MotionEvent.ACTION_UP:
                isStarted = false;

        }
        return true;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);

        canvas.drawBitmap(img, x, y, null);
    }
}
}
.

и его работает отлично ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top