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方法?