Monday, 15 April 2013

android - Moving imageview with touch event -



android - Moving imageview with touch event -

i want simple thing hava imageview , can move touch

this code, im sorry if wrong because seek myself

img.setontouchlistener(new view.ontouchlistener() { @override public boolean ontouch(view arg0, motionevent arg1) { // todo auto-generated method stub if(arg1.getaction()==motionevent.action_down) { status=startdrag; } else if(arg1.getaction()==motionevent.action_up) { status=stopdrag; } homecoming false; } }); @override public boolean ontouchevent(motionevent event) { // todo auto-generated method stub if( status==startdrag) { params.leftmargin = (int)event.getx(); params.topmargin = (int)event.gety(); img.setlayoutparams(params); } homecoming super.ontouchevent(event);

}

can u show me right way please? :d

ontouch events dragging views works perfect kid views of relativelayout , framelayout.

here example:

@override public boolean ontouch(view v, motionevent event){ switch(event.getaction()) { case motionevent.action_down : { x = event.getx(); y = event.gety(); dx = x-myview.getx(); dy = y-myview.gety(); } break; case motionevent.action_move : { myview.setx(event.getx()-dx); myview.sety(event.gety()-dy); } break; case motionevent.action_up : { //your stuff } homecoming true; }

now dx , dy is, on action_down records have touched on view, , gets difference left (x) , top (y) of view, maintain margins during action_move.

return of touch event has true if attending it.

update : api 8

in case of api 8, getx() , gety() methods not giving right results, can utilize getrawx() , getrawy() methods.

example :

relativelayout.layoutparams parms; linearlayout.layoutparams par; float dx=0,dy=0,x=0,y=0; @override public boolean ontouch(view v, motionevent event) { switch(event.getaction()) { case motionevent.action_down : { parms = (layoutparams) myview.getlayoutparams(); par = (linearlayout.layoutparams) getwindow().findviewbyid(window.id_android_content).getlayoutparams(); dx = event.getrawx() - parms.leftmargin; dy = event.getrawy() - parms.topmargin; } break; case motionevent.action_move : { x = event.getrawx(); y = event.getrawy(); parms.leftmargin = (int) (x-dx); parms.topmargin = (int) (y - dy); myview.setlayoutparams(parms); } break; case motionevent.action_up : { } break; } homecoming true; }

android layout touch imageview

No comments:

Post a Comment