Android 煩人的座標原點
螢幕的左上角是系統座標原點(0,0),包括標題欄,通知欄高度。
getTop:獲取到的,是view自身的頂邊到其父佈局頂邊的距離
getLeft:獲取到的,是view自身的左邊到其父佈局左邊的距離
getRight:獲取到的,是view自身的右邊到其父佈局左邊的距離
getBottom:獲取到的,是view自身的底邊到其父佈局頂邊的距離
getX():獲取點選事件相對控制元件左邊的x軸座標,即點選事件距離控制元件左邊的距離
getY():獲取點選事件相對控制元件頂邊的y軸座標,即點選事件距離控制元件頂邊的距離
getRawX():獲取點選事件相對整個螢幕左邊的x軸座標,即點選事件距離整個螢幕左邊的距離
getRawY():獲取點選事件相對整個螢幕頂邊的y軸座標,即點選事件距離整個螢幕頂邊的距離。系統座標原點。
c.getLocationInWindow():座標原點在B
c.getLocationOnScreen():座標原點在A,系統座標原點。
一、new HelloView時View的原點:
/** *初始化繪製線的畫筆 **/ publicvoid initLinePaint(){ linePaint = new Paint(); // 設定畫筆 linePaint.setColor(Color.GREEN); linePaint.setAntiAlias( linePaint.setStrokeWidth(5);// 設定線寬 } /** *繪製View **/ protectedvoid onDraw(Canvas canvas){ Log.v("onDraw(Canvas canvas)","" + this.getHeight()+ "" + this.getWidth()); canvas.drawColor(Color.WHITE); initLinePaint();// 初始化畫筆 myUseBitmapFactory(canvas); canvas.drawLine(0, 0, this.getWidth(), } |
執行:
二、使用XML中佈局檔案時的View原點:
/** *使用自定義的View **/ publicclass MainActivity extends Activity { publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);// 使用自定義的View } } |
這裡直接給出執行結果圖: