Come spostare un'immagine sul layout XML quando l'utente su TOUCH EVENTO?
-
10-12-2019 - |
Domanda
Ho implementato un'applicazione con l'immagine.Nella mia applicazione ho usato sull'immagine quando mai l'utente tocca sull'immagine, vorrei spostare l'immagine insieme al suo tocco dei dito.Ho implementato la mia applicazione come segue:
((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;
}
});
.
Dal codice sopra non sono in grado di spostare l'immagine insieme al dito dell'utente.
Soluzione
C'è un campione per ottenere questo vedere:
http://blahti.wordpress.com/2011/ 01/17 / Moving-views-Part-2 /
Altri suggerimenti
Solo un suggerimento, funziona per me:
Return False a TRUE del metodo OnTouch ()
Sto usando questo codice per ottenere questo
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);
}
}
}
.
E il suo funziona perfettamente ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow