导航:首页 > 操作系统 > android获取相对坐标

android获取相对坐标

发布时间:2023-06-06 12:38:25

android怎么获取bitmap左上角坐标

用ImageView来装载这个bitmap并且填满整个ImageView,再用imageview对象来获取坐标值,getX(),getY(),获取的就是左上角的坐标值

⑵ android中获得控件的位置(相对于布局文件)

正确的代码如下所示

java">TextViewtv=(TextView)findViewById(R.id.text);
tv.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListener(){
@Override
publicvoidonGlobalLayout(){
//这里执行获取位置大小操作
intleft=tv.getLeft();
inttop=tv.getTop();
intbottom=tv.getBottom();
intright=tv.getRight();
//tv相对于父布局的坐标就得出来了

}
}

view的位置和大小是通过onLayout和onMeasure方法计算出来的,执行到activity的onCreate()方法时,尚未开始计算控件的大小和位置,所以是取不到的

OnGlobalLayoutListener 是ViewTreeObserver的内部类,当一个视图树的布局发生改变时,可以被ViewTreeObserver监听到,这是一个注册监听视图树的观察者(observer),在视图树的全局事件改变时得到通知

除了OnGlobalLayoutListener ,ViewTreeObserver还有如下内部类:


interfaceViewTreeObserver.OnGlobalFocusChangeListener

当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类


interfaceViewTreeObserver.OnGlobalLayoutListener

当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类


interfaceViewTreeObserver.OnPreDrawListener

当一个视图树将要绘制时,所要调用的回调函数的接口类


interfaceViewTreeObserver.OnScrollChangedListener

当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类


interfaceViewTreeObserver.OnTouchModeChangeListener

当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类

⑶ android View坐标系:getX/getTranslation/getLeft

图中灰色矩形是320X480屏幕区域,绿色矩形是300X300的父View,实线黄色矩形是100X100的子View,虚线黄色矩形是实线矩形setTranslationX(100)/setTranslationY(100)之后的位置。

以下如无特别说明,所有的方法说明均是以实线黄色矩形作为参照。
getX()/getY()获取的是其左上角相对于父View(绿色矩形)的左上角坐标位置,图中getX()=100,getY()=100。

getTranslationX/Y获取的是当前View相对于其当前位置的偏移,向左为负值,向右为正值,因此对于实线黄色矩形来说getTranslationX()=0,getTranslationY()=0,而对于虚线黄色矩形来说getTranslationX()=100,getTranslationY()=100,translationX = getX()-getLeft(),修改translationX/Y的值,会导致getX/Y的变化。但是,如果修改X/Y的值并不会导致translationX/Y的变化,他们的值依然是0。

getLeft/Right/Top/Bottom,获取的是View相对于父View左侧/顶部的距离,图中实线黄色矩形的getLeft()=100,getRight()=200(红色线标识所示),getTop()=100,getBottom()=200(紫色线标识所示),该系列方法严格来讲控制的是View的尺寸而不是位置,因此在setX或者setTranslationX时虽然改变了View的位置,但是其Left/Right/Top/Bottom参数却没有改变。因此对于图中的虚线黄色矩形,getLeft/Right/Top/Bottom获取到的值依然是100/200/100/200,如果通过setLeft(0),setTop(0)方法将实线黄色矩形的left和top值修改为0,则该矩形的左上角会与父View(绿色矩形)的左上角重合,而该矩形的右下角不变,同时getLeft()=0,getTop()=0,getRight()=200,getTop()=200,getX()=0,getY()=0,getTranslationX()=0,getTranslationY()=0。

阅读全文

与android获取相对坐标相关的资料

热点内容
彩虹六号如何人工服务器 浏览:632
mc服务器地址怎么登入 浏览:556
苹果app怎么扫描二维码下载 浏览:959
css文件在线解压 浏览:154
36岁程序员近况 浏览:283
哪里可以下载不加密的歌 浏览:934
隐藏文件夹是什么梗 浏览:918
插件注册命令 浏览:497
梁一端加密一端不加密规范 浏览:82
代码行数统计命令 浏览:104
单片机中2K表示什么 浏览:482
紫禁城为什么会断开服务器 浏览:580
华为手机的方舟编译器在哪呢 浏览:123
下载压缩虐杀原形2 浏览:907
linux脚本cd 浏览:167
间架结构pdf 浏览:843
重庆农村商业银行app怎么老出问题 浏览:471
慧编程配置要求 浏览:674
数控机床编程与操作视频 浏览:462
文件夹资料误删怎么办 浏览:88