2013-12-14 27 views
0

我已通過在畫布上繪製矩形創建了條形圖。唯一的問題是圖形是顛倒的。我試着用下面的代碼翻轉從一開始就在畫布權利,但這種影響的onTouchEvent方法以一種不可思議的方式:翻轉帆布倒置,同時保留onTouchEvent方法

public void onDraw(final Canvas canvas) { 
      int width = super.getWidth(); 
      int height = super.getHeight(); 
       canvas.scale(1f, -1f, 
         width * 0.5f, height * 0.5f); 
       mCanvas = canvas; 
       super.onDraw(canvas); 
....//more code after that 

如果上面的代碼實現,圖中正常顯示。但是,矩形的y座標是相反的。這意味着如果我單擊沒有形狀的畫布的頂部,則onTouchEvent方法仍然會被觸發,因爲如果畫布未翻轉,則該點就是矩形所在的位置。

@Override 
     public boolean onTouchEvent(MotionEvent event) { 
      super.onTouchEvent(event); 

       int x = (int)event.getX(); 
       int y = (int)event.getY(); 
       xStored = x; yStored=y; 
       if (event.getAction()==MotionEvent.ACTION_UP){ 

       }else if(event.getAction()==MotionEvent.ACTION_DOWN){ 
        System.out.println("Touching down!"); 
        if(!drawNew){ 
         for(Rect rect : rectangles){ 
          if(rect.contains(x,y)){ 
           System.out.println("Touched Rectangle, start activity."+x+","+y); 
           drawNew = true; 

           invalidate(); 
          }else{ 

          } 
        } 

        }else{ 
         drawNew = false; 

         invalidate(); 
        } 
       }else if(event.getAction()==MotionEvent.ACTION_MOVE){ 

       } 
       this.postInvalidate(); 
      return true; 
      } 

最好的方式翻轉帆布顛倒,同時仍然保留onTouchEvent方法?

回答

0

事實證明,最好在畫布上移動和旋轉對象,而不是旋轉畫布本身。