Android Studio - How to apply onFling to an imageView? -
i'm pretty new developing apps, @ moment i'm trying learn basics.
so far code runs , if swipe screen image moves (which want). however, @ moment image moves if swipe anywhere on screen, want move when swipe image.
here's main activity code:
package com.colourdrop.swipeattempt; import android.os.bundle; import android.support.v4.view.gesturedetectorcompat; import android.support.v7.app.appcompatactivity; import android.view.gesturedetector; import android.view.menu; import android.view.menuitem; import android.view.motionevent; import android.view.view; import android.widget.imageview; import android.widget.textview; public class myactivity extends appcompatactivity implements gesturedetector.ongesturelistener,gesturedetector.ondoubletaplistener{ private textview text; private imageview image; private gesturedetectorcompat gesturedetector; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_my); text = (textview) findviewbyid(r.id.textview); image = (imageview) findviewbyid(r.id.image); this.gesturedetector = new gesturedetectorcompat(this, this); gesturedetector.setondoubletaplistener(this); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } public void update(view v){ text.settext("you pressed button!"); } ////// begin gestures ////// @override public boolean onsingletapconfirmed(motionevent e) { text.settext("onsingletapconfirmed"); return true; } @override public boolean ondoubletap(motionevent e) { text.settext("ondoubletap"); return true; } @override public boolean ondoubletapevent(motionevent e) { text.settext("ondoubletapevent"); return true; } @override public boolean ondown(motionevent e) { text.settext("ondown"); return true; } @override public void onshowpress(motionevent e) { text.settext("onshowpress"); } @override public boolean onsingletapup(motionevent e) { text.settext("onsingletapup"); return false; } @override public boolean onscroll(motionevent e1, motionevent e2, float distancex, float distancey) { text.settext("onscroll"); return false; } @override public void onlongpress(motionevent e) { text.settext("onlongpress"); } @override public boolean onfling(motionevent e1, motionevent e2, float velocityx, float velocityy) { text.settext("onfling"); image.setx(image.getx()+200); return false; } @override public boolean ontouchevent(motionevent event) { this.gesturedetector.ontouchevent(event); return super.ontouchevent(event); } }
instead of delegating activity's ontouchevent gesturedetector, delegate imageview's ontouch.
image.setontouchlistener(new view.ontouchlistener() { public boolean ontouch(view v, motionevent event) { return gesturedetector.ontouchevent(event); } });
Comments
Post a Comment