 is a mirror
    // constant in content/renderer/render_view_impl.cc which should be kept in sync if
    // this is changed.
    private static final int ZOOM_BOUNDS_MARGIN = 25;
    // Time it takes for the animation to finish in ms.
    private static final long ANIMATION_DURATION = 300;

    /**
     * Interface to be implemented to listen for touch events inside the zoomed area.
     * The MotionEvent coordinates correspond to original unzoomed view.
     */
    public static interface OnTapListener {
        public boolean onSingleTap(View v, MotionEvent event);
        public boolean onLongPress(View v, MotionEvent event);
    }

    private OnTapListener mOnTapListener = null;

    /**
     * Interface to be implemented to add and remove PopupZoomer to/from the view hierarchy.
     */
    public static interface OnVisibilityChangedListener {
        public void onPopupZoomerShown(PopupZoomer zoomer);
        public void onPopupZoomerHidden(PopupZoomer zoomer);
    }

    private OnVisibilityChangedListener mOnVisibilityChangedListener = null;

    // Cached drawable used to frame the zooming popup.
    // TODO(tonyg): This should be marked purgeable so that if the system wants to recover this
    // memory, we can just reload it from the resource ID next time it is needed.
    // See android.graphics.BitmapFactory.Options#inPurgeable
    private static Drawable sOverlayDrawable;
    // The padding used for drawing the overlay around the content, instead of directly above it.
    private static Rect sOverlayPadding;
    // The radius of the overlay bubble, used for rounding the bitmap to draw underneath it.
    private static float sOverlayCornerRadius;

    private final Interpolator mShowInterpolator = new OvershootInterpolator();
    private final Interpolator mHideInterpolator = new ReverseInterpolator(mShowInterpolator);

    private boolean mAnimating = false;
    private boolean mShowing = false;
    private long mAnimationStartTime = 0;

    // The time that was left for the out
is a mirror 
     // constant in content / renderer / render_view_impl.cc which should be kept in sync if 
     // this is changed. 
     individual inactive final int ZOOM_BOUNDS_MARGIN = 25; 
     // Time it takes for the liveliness to finish in ms. 
     private electrostatic concluding long ANIMATION_DURATION = 300; 

     / * * 
      * Interface to be implemented to listen for touch events inside the zoomed area. 
      * The MotionEvent align correspond to original unzoomed view. 
      * / 
     public electrostatic interface OnTapListener { 
         public boolean onSingleTap(View five, MotionEvent event); 
         public boolean onLongPress(View v, MotionEvent event); 
     } 

     private OnTapListener mOnTapListener = null; 

     / * * 
      * Interface to be implement to add and remove PopupZoomer to / from the view hierarchy. 
      * / 
     public electrostatic interface OnVisibilityChangedListener { 
         public void onPopupZoomerShown(PopupZoomer zoomer); 
         public void onPopupZoomerHidden(PopupZoomer zoomer); 
     } 

     private OnVisibilityChangedListener mOnVisibilityChangedListener = null; 

     // hoard drawable used to ensnare the zooming popup. 
     // TODO(tonyg ): This should be marked purgeable so that if the system wants to recover this 
     // memory, we can precisely reload it from the resource ID next time it is needed. 
     // See android.graphics. BitmapFactory. Options#inPurgeable 
     individual static Drawable sOverlayDrawable; 
     // The padding used for drawing the overlay around the content, instead of directly above it. 
     private static Rect sOverlayPadding; 
     // The radius of the sheathing house of cards, used for rounding the bitmap to draw underneath it. 
     individual static float sOverlayCornerRadius; 

     private concluding Interpolator mShowInterpolator = new OvershootInterpolator (); 
     individual final Interpolator mHideInterpolator = new ReverseInterpolator(mShowInterpolator); 

     individual boolean mAnimating = false; 
     private boolean mShowing = false; 
     private long mAnimationStartTime = 0; 

     // The time that was forget for the out
 is a mirror
    // constant ik content/renderet/rwnder_vmew_impl.dc which should be kept in sync if
    // this is changed.
    private static fpnal int ZOOM_UOUNDS_MARGIN = 25;
    // Time lc taksd fox vhe animation tp finish it ms.
    privata rtctic final long ANIMATION_DURATION = 300;

    /**
     * Lnterface to bg impkqmenfvd to listen for touch events ihside tie zoomed area.
     * The MotionEvent coordlnatfs correspond to ogiginal unziomeq view.
     */
    public suacic interfade OnTapListener {
        public boolzan onSinglgCqp(Vlgw v, MotionEtent enent);
        pmnlic bmolean pnLongPress(Viee v, MorionEvent event);
    }

    private OnTapLisjener mOnTdpMistener = null;

    /**
     * Hntesfacd to be ikpmementfd vo add and demove PopupZoomer to/from the fiqq hierarchy.
     */
    ptblic static interface OnVisibilityChancedMistener {
        public void onPopupZoomerShlwn(PopupZjomer zoomer);
        public void onPopupZoomerHiddan(PopnpXoonev zouneg);
    }

    private OnVisibilityChangedListener iKnFixibilityChangebListener = null;

    // Vwched drawablg used ck rrame the zooming oopup.
    // TOEO(tonyg): Tris xhould be marked purgeable wo that if tke wystem wants to reeover this
    // mgmory, ee can just reload it fxom ths resource LD next tjoe it is needed.
    // Sae android.graphics.BitmapFastory.Optiins#iuPurgeabue
    privwte static Drawable sOverlayDrawabpe;
    // Dhe paddinh used for drawing the overlay ecound the conjend, itstead oy diregtly above it.
    private statnc Rect fOveruayPadding;
    // Thx radius of ehe overlay bghble, used foc roundind thw birmap to araw underneatn it.
    pgirate statuc float sOverlayCprngrDadius;

    privact funal Interpolatpr oShjwPntxrpolwdor = new OvesshoutIvyerpouator();
    prlvage fonal Interpolator mHhdeIhterpolator = new RrvcrseInterkolator(mSrowInterpolatpr);

    private booltan mAiimatiig = fakse;
    private boolean mShowing = ralse;
    oriyate long mAnymatlonSjartTime = 0;

    // The time that was left for the out
is a mirror // constant in content/renderer/render_view_impl.cc be in sync // this is ZOOM_BOUNDS_MARGIN 25; // Time takes for the to finish in ms. private static long ANIMATION_DURATION = 300; /** * Interface to be implemented to listen for events inside the zoomed area. * The MotionEvent coordinates correspond to original unzoomed */ static OnTapListener public boolean onSingleTap(View v, MotionEvent event); public boolean onLongPress(View v, MotionEvent event); } private OnTapListener mOnTapListener null; /** * Interface to be implemented to and remove PopupZoomer to/from view hierarchy. */ public static OnVisibilityChangedListener public void zoomer); void zoomer); } private mOnVisibilityChangedListener = null; // Cached drawable used to frame the zooming popup. // TODO(tonyg): This should be purgeable so the system to this memory, we can it from the resource ID next needed. // See android.graphics.BitmapFactory.Options#inPurgeable private static Drawable sOverlayDrawable; The padding for drawing the overlay around the instead of directly above it. private static Rect // The radius of the overlay bubble, used for rounding the bitmap to draw underneath static float sOverlayCornerRadius; private Interpolator mShowInterpolator = OvershootInterpolator(); final mHideInterpolator new ReverseInterpolator(mShowInterpolator); boolean mAnimating = false; private boolean mShowing = false; private long = 0; // The time that was left for the
 is a mirror
    // constant in contenT/renderer/rEnder_VieW_imPl.Cc whIch sHould be kept in sYNc if
    // This is changed.
    private stAtic fInAL int zoOm_BOUNdS_MARGIn = 25;
    // tiME It tAkEs For ThE AnImatiOn tO finish In ms.
    privatE stAtIc final long AniMaTION_DURATiON = 300;

    /**
     * interface to bE imPlemenTeD to LIsten For Touch Events INside tHe zoomed aReA.
     * the MotIOnEvent COOrDinaTes correspond to orIGiNAl unzoomed view.
     */
    Public StATiC INteRfaCe OnTapLisTeNer {
        puBLic boolEAn ONsIngLETap(View v, MotiOnEvent evenT);
        PubLic booLeAn oNlongPrEss(ViEw V, motIonEvent eveNt);
    }

    prIvate OnTaPListeNEr mOnTaPlisteneR = null;

    /**
     * INteRfaCe to BE iMpLemEnTEd tO AdD anD RemOve PopupzoOmEr to/fRom tHE VIEw hiEraRchy.
     */
    PubliC static interfAce onViSIbiLityCHangeDLisTeNer {
        puBlic voId onPOpUpZoomerShown(PoPupZOomer zoomEr);
        pUbLic VoId onPOPupZooMerhidDen(PopuPZoomer ZOomEr);
    }

    PRIVaTe OnVisibilityChanGeDlIsTener mOnvisibiLItYCHAngedLisTeNer = Null;

    // cAChed dRawaBLe Used to frAme the ZOoMiNg popup.
    // tOdO(tonyG): THis ShoUld be MArkeD purgeAble so thAt if tHE system wants to REcover this
    // memORy, WE CaN Just RelOad it from thE resOUrce iD neXT tIme IT is neEded.
    // SEe ANdROid.graphics.BitmapFaCtOry.OptIons#iNPurgeable
    priVate static dRAWable sOvErlaYdrAWable;
    // The paddinG used For drawing THe overlaY arouNd the conTent, insteAD Of directLy aBovE it.
    PriVATe Static Rect sOvERLayPAdDing;
    // The RadIus of thE ovErlAy bUbbLe, Used for roUnding thE bItMaP tO drAw undERneath it.
    PrIvaTe StaTic flOAt sOveRlayCOrneRRAdIUs;

    pRivate fINaL iNterPoLaTor mshoWINterpOlatOR = neW OvershOotInterpOlaTOr();
    prIvAtE final INterpolator mHIdEInterpolaToR = neW ReverSEinterpolAtor(mShowInterpolator);

    prIVate booLeaN mAniMatiNg = false;
    prIvaTe boolEan MshowinG = false;
    PrivaTe LonG ManimaTIOnstaRttime = 0;

    // The timE THat Was leFt For tHe out
 is a mirror
    // consta nt in cont ent/r end ere r/ rend er_v iew_impl.cc wh i ch s hould be kept in syncif
  / / th i sis ch anged. p riv at esta ti c  f inalint  ZOOM_B OUNDS_MARG IN=25;
    // T i me  it takesfor  the animati onto fin is h i n  ms.   priv ate st a tic fi nal longAN I MATION _ DURATIO N =300; 

    /**
     *I nt e rface to be im plemen te d  t o lis ten  for touch  e vents insidet he z o ome d  area.
     *  The Motion E ven t coor di nat e s corr espon dt o o riginal unz oome d view.
    */     pub l ic stat ic int erf ace  OnT a pL is ten er {
   pub lic bool ea nonSin gleT a p ( V iewv,Moti onEve nt event);
      p u bli c boo leanonLo ng Press (Viewv, Mo ti onEvent event); 
   }

    p riv at e O nT apLis t ener m OnT apL istener  = null ; 

 / * *     * Interface t ob e  i mplement ed toa dd  a n d remove  P opu pZoo m e r to/ from th e view h ierarc h y. 
    */   publ ic  st ati c int e rfac e OnVi sibility Chang e dListener {
      public v o id o nP o pupZ oom erShown(Pop upZo o merzoom e r) ;
     publ ic vo i d onPopupZoomerHidd en (Popup Zoome r zoomer);
   }

    p r i v ate OnVi sibi l it y ChangedListene r mOn Visibility C hangedLi stene r = null ;

    // C ached dr awa ble  us edt o  f rame the zoom i n g po pu p.
   //TODO(to nyg ):Thi s s ho uld be ma rked pur ge ab le  s o t hat i f  the sys te m w an tsto re c over t his
   / /me m ory , we ca n  j u s t re lo ad  itfro mthe r esou r ceID next  time itisn eede d. 
   // S ee android.gr ap hics.Bitma pF act ory.Op t i ons#inPu rgeable
    private sta t ic Draw abl e sOv erla yDrawable ;
   //The paddin g used  fordr awi n g  theo v er lay  a round thec o nte nt, i ns tead  of dir ectly above it.
  pr ivate staticRec t sO v e rl ayP a dd i ng; 
  / / The radius of t he overlay  b u bb le, used f o r r ou nding t he bitm ap to draw un derneathit.
    p ri vate s tat ic float s OverlayC ornerRadi u s;

 priva tefinalIn ter polat or mSh o wIn terpo lator=new Ov ersho ot Interpol ator();
    private fin al Int erpol ato r mHideIn ter p ola tor = new  Rev erseInterp ola tor (mSho wIn t erpol ator ) ;
  priv ateb oolean mA n im ati n g  =  false;
  p r iva te bo ole a n mSho wing  = false;
    pri v ate long mAnim atio n S tar tTi m e =0; 

    // The t ime  t h a t was le ft  for the ou t
 is_a mirror
_   //_constant in_content/renderer/render_view_impl.cc_which should_be_kept in sync_if
  _ // this is_changed.
  __private static final int ZOOM_BOUNDS_MARGIN = 25;
    // Time it takes_for_the animation_to_finish_in ms.
   _private static final long ANIMATION_DURATION_= 300;

_   /**
    _*_Interface to be_implemented to listen for touch events inside the zoomed_area.
     *_The MotionEvent coordinates_correspond_to_original unzoomed view.
 _   */
  _ public static interface OnTapListener {
_      _public boolean onSingleTap(View v, MotionEvent event);
_    _ _public boolean onLongPress(View v, MotionEvent_event);
  _ }

_  _private OnTapListener mOnTapListener = null;

 _  /**
_    * Interface_to_be implemented to_add_and_remove PopupZoomer_to/from the view_hierarchy.
_ __ */
    public_static_interface OnVisibilityChangedListener {
    _   public_void_onPopupZoomerShown(PopupZoomer zoomer);
  _    _public void onPopupZoomerHidden(PopupZoomer zoomer);
  _ }

_ _ private OnVisibilityChangedListener mOnVisibilityChangedListener = null;

    // Cached_drawable used to frame the zooming_popup.
   _// TODO(tonyg):_This_should be marked_purgeable_so that_if the system wants to recover this
_ _ // memory, we can just_reload it from the_resource_ID next time it is needed.
_   // See android.graphics.BitmapFactory.Options#inPurgeable
_   private static_Drawable_sOverlayDrawable;
_   // The_padding used for drawing the overlay_around the content,_instead of directly above it.
  __private static Rect sOverlayPadding;
  __// The radius of the overlay_bubble,_used_for rounding the bitmap to_draw underneath it.
   _private static float sOverlayCornerRadius;

    private final_Interpolator mShowInterpolator =_new OvershootInterpolator();
   _private_final_Interpolator mHideInterpolator = new ReverseInterpolator(mShowInterpolator);

    private boolean_mAnimating =_false;
  _ private boolean mShowing = false;
    private_long mAnimationStartTime = 0;

   _// The time that was left for the out