获得的坐标就是控件的左上角坐标,可以通过得到宽度和高度来获得其他的坐标
获得坐标的关键在于,只有等到控件加载好了以后,才能够准确的获得坐标,
下面的方法其实不管用,可以自己自定义一个线程,等待一秒钟以后,再获得控件的坐标
new Thread() {
public void run() {
try {
Thread.sleep(1000);
waitEnterButton.getLocationOnScreen(location);
for (int i : location) {
Log.e("@@@@@@@@@", i + "");
}
mySlidingView.setPosition(location[0], location[1],
waitEnterButton.getWidth(), location[1] + 5);
} catch (InterruptedException e) {
e.printStackTrace();
}
};
}.start();
还不一个方法是,通过监听控件的加载状态来获得坐标
- observer.addOnPreDrawListener(new OnPreDrawListener() {
- @Override
- public boolean onPreDraw() {
- if (refreshHeight == 0) {
- refreshHeight = linearLayout.getMeasuredHeight();
- relativeLayout.setPadding(0, -refreshHeight, 0, 0);
- }
- return true;
- }
- });
int[] location = new int[2] ;
view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标
view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标
location [0]--->x坐标,location [1]--->y坐标
getLocationOnScreen
getLocationInWindow
getLeft
如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些。
getLocationOnScreen
getLocationInWindow
getLeft
如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些。
如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些。