著论准过秦,作赋拟子虚。这篇文章主要讲述Android - View之View的位置参数相关的知识,希望能为你提供帮助。
View是android中所有控件的基类,不管是简单的Button和TextView,还是复杂的RelativeLayout和ListView,其基类都是View类;ViewGroup也继承了View类,这意味着View本身就可以代表简单的和复杂的所有控件和布局,通过这种关系,就形成了View树的结构。
在操作View的时候,尤其是在处理自定义View的一些事件的时候,我们往往需要获取到目标View的这样或那样的参数。下面就来简单介绍一下View的各种参数及其用法。
View有这样的一些属性:x、y、z、left、right、top、bottom、elevation、translationX、translationY、translationZ、rawX、rawY等等,下面一一介绍这些参数的意义及如何获取这些参数。
【Android - View之View的位置参数】这里需要注意一点:以下方法,如果直接在Activity的onCreate()方法中调用,则可能会返回0,这是因为在程序刚刚启动,刚刚开始绘制这个View的时候,我们就要获取这个View的各个位置参数,当然会返回0。解决方法是:在Activity的
onWindowFocusChanged()
方法中获取;或者可以新建一个线程,先
Thread.sleep()
一段时间之后,再获取这些参数。
left、right、top、bottom、elevation这五个参数代表的是View的原始位置相对于其父控件边缘的距离:
- left:目标View的最左边和这个View所在父控件的最左边的距离,通过view.getLeft()方法获取;
- right:目标View的最右边和这个View所在父控件的最左边的距离,通过view.getRight()方法获取;
- top:目标View的最上边和这个View所在父控件的最上边的距离,通过view.getTop()方法获取;
- bottom:目标View的最下边和这个View所在父控件的最上边的距离,通过view.getBottom()方法获取;
- elevation:目标View的Z轴高度和这个View所在的父控件所在的Z轴高度的距离,通过view.getElevation()方法获取(这个属性是Android 5.0之后添加的新属性)。
translationX、translationY、translationZ这三个参数代表的是在动画或者滑动View的时候,View的当前位置相对于其原始位置平移的距离:
- translationX:在滑动过程中,View当前位置的最左边和这个View原始位置的最左边的距离,通过view.getTranslationX()方法获取;
- translationY:在滑动过程中,View当前位置的最上边和这个View原始位置的最上边的距离,通过view.getTranslationY()方法获取;
- translationZ:在动画过程中,View当前位置的Z轴高度和这个View原始Z轴高度的距离,通过view.getTranslationZ()方法获取(这个方法是Android 5.0之后添加的新方法)。
x、y、z这三个参数代表的是View的当前位置相对于其父控件的距离:
- x:目标View的当前位置的最左边和这个View所在父布局的最左边的距离,通过view.getX()方法获取;
- y:目标View的当前位置的最上边和这个View所在父布局的最上边的距离,通过view.getY()方法获取;
- z:目标View的当前位置的Z轴位置和这个View所在父布局的Z轴位置的距离,通过view.getZ()方法获取(这个方法是Android 5.0之后添加的新方法)。
- x = left + translationX;
- y = top + translationY;
- z = elevation + translationZ;
推荐阅读
- 如何解决( Server Error in '/' Application.)
- android中使用图文并茂的按钮
- java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable /getColor
- Unity中安卓APP安装OBB分包(基础APK+OBB)
- callapply
- Android Framework层Power键关机流程(二,关机流程)
- Android WebView 开发教程
- PPT2007表格制表符怎样对齐_PowerPoint专区
- ppt中SmartArt的运用_PowerPoint专区