我通过在画布上绘制矩形来创建条形图。唯一的问题是图表是颠倒的。我尝试使用以下代码从一开始就翻转画布,但这会以一种奇怪的方式影响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
如果实施了上述代码,则图表会正确显示。然而,x&矩形的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 :(得分:0)
事实证明,最好在画布上移动和旋转对象,而不是旋转画布本身。