android imageview gesture rotate cause loss of quality for the edges -


i using below code drag,scale rotate image inside image view, , it's working fine problem when rotating image edges become fuzzy while image retain same quality , doesn't happen in scaling , please suggest solution, tanks,code:-

private void dragzoomrotate(imageview view, motionevent event){       view.setscaletype(imageview.scaletype.matrix);        // handle touch events here...      switch (event.getaction() & motionevent.action_mask)        {     case motionevent.action_down:         savedmatrix.set(matrix);         start.set(event.getx() , event.gety() );         mode = drag;         lastevent = null;         break;     case motionevent.action_pointer_down:   // first , second finger down         olddist = spacing(event);                  savedmatrix.set(matrix);         midpoint(mid, event);         mode = zoom;          lastevent = new float[4];         lastevent[0] = event.getx(0);         lastevent[1] = event.getx(1);         lastevent[2] = event.gety(0);         lastevent[3] = event.gety(1);         degrees = rotation(event);         break;     case motionevent.action_up: // first finger lifted     case motionevent.action_pointer_up:   // second finger lifted         mode = none;         lastevent = null;          break;     case motionevent.action_move:             if (mode == drag) {              // ...             matrix.set(savedmatrix);              matrix.posttranslate(event.getx() - start.x , event.gety() - start.y );          }         else if (mode == zoom && event.getpointercount()==2) {             float newdist = spacing(event);             matrix.set(savedmatrix);             if (newdist > 10f) {                               float scale = newdist / olddist;              //   matrix.postscale(scale, scale, mid.x, mid.y);             }              if (lastevent!=null){                 newrot = rotation(event);                  float r = newrot-degrees;                 matrix.postrotate(r, view.getmeasuredwidth()/2, view.getmeasuredheight()/2);               }         }         //          break;     }         view.setimagematrix(matrix); }  private float rotation(motionevent event)  {     double delta_x = (event.getx(0) - event.getx(1));     double delta_y = (event.gety(0) - event.gety(1));      double radians = math.atan2(delta_y, delta_x);     return (float) math.todegrees(radians);          }      /*       * --------------------------------------------------------------------------  * method: spacing parameters: motionevent returns: float description:  *   * checks spacing between 2 fingers on touch  * ----------------------------------------------------  */  private float spacing(motionevent event)  {     float x = event.getx(0) - event.getx(1);     float y = event.gety(0) - event.gety(1);     return floatmath.sqrt(x * x + y * y); }  /*  * --------------------------------------------------------------------------  * method: midpoint parameters: pointf object, motionevent returns: void  * description: calculates midpoint between 2 fingers  * ------------------------------------------------------------  */     private void midpoint(pointf point, motionevent event)  {     float x = event.getx(0) + event.getx(1);     float y = event.gety(0) + event.gety(1);     point.set(x / 2, y / 2); } 


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -