2012-03-10 22 views
1

私はイメージでアプリケーションを実装しました。私のアプリケーションでは、ユーザがイメージをタッチする度にイメージを使用しました。イメージを彼の指のタッチとともに移動したいと思います。私は次のようにアプリケーションを実装しました:タッチイベントでユーザーがXMLレイアウトでイメージを移動する方法は?

((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; 
    } 
}); 

私は上記のコードから、ユーザーの指と一緒に画像を移動することはできません。これは見達成するためのサンプルがあり

答えて

1

だけの提案は、それが私の作品:

私は

0

にonTouch()メソッドをtrueにfalseを返してくださいこのコードを使ってこれを達成するには

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); 
    } 
} 
} 

とその完全な作業...

関連する問題