android - how to add pinch to zoom textview in viewpager? -
i searched many blogs regarding pinch zoom textview
in viewpager
. found many answers pinch zoom imageview
.
how can add pinch zoom in viewpager.
here links, read before posting:
updated
@override protected boolean canscroll(view v, boolean checkv, int dx, int x, int y) { if (v instanceof touchimageview) { return ((touchimageview) v).canscrollhorizontallyfroyo(-dx); } else { return super.canscroll(v, checkv, dx, x, y); } }
i getting error in if (v instanceof touchimageview)
. error message says ,touchimageview
cannot resolved
create private class simpleonscalegesturelistener
extends simpleonscalegesturelistener
in activity this
public class simpleonscalegesturelistener extends scalegesturedetector.simpleonscalegesturelistener { float scalefactor; @override public boolean onscale(scalegesturedetector detector) { scalefactor *= detector.getscalefactor(); if(istablet(getapplicationcontext())){ setfontstyleandsizetab(); }else{ setfontstyleandsize(); } scalefactor = math.max(15.0f, math.min(scalefactor,36.0f)); view view=pager.getfocusedchild().findviewbyid(r.id.article_content) ; view article_intro=pager.getfocusedchild().findviewbyid(r.id.article_intro) ; viewgroup group = (viewgroup) view; int count=group.getchildcount(); for(int i=0;i<count;i++){ view child=group.getchildat(i); if(child instanceof textview){ textview textview=(textview)child; textview.settextsize(scalefactor); } } return true; } }
inside onscale
function doing getting scalefactor
first , setting limits zooming text. here textsize minimum 15 , maximum 36.
next line appling pinch zoom textview inside viewpager.
view view=pager.getfocusedchild().findviewbyid(r.id.article_content);
in first obtaining viewpager current item calling pager.getfocusedchild()
obtaining linearlayout contains textviews want zoom.
you can pass textview ids directly there. @ runtime adding textviews layout why follow this.
if want zoom mutilple textviews @ time have same parent can follow or can create multiple view instance passing textview id directly.
textview.settextsize(scalefactor);
here applying scaling textview
you must override method detect touch event viewpager
@override public boolean dispatchtouchevent(motionevent ev) { super.dispatchtouchevent(ev); return scalegesturedetector.ontouchevent(ev); }
and in oncreate()
create scalegesturedetector instance this:
scalegesturedetector = new scalegesturedetector(this, new simpleonscalegesturelistener());
now can apply smooth zooming in viewpager.
Comments
Post a Comment