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