View关于坐标的几个方法和属性
来源:互联网 发布:js删除节点本身 编辑:程序博客网 时间:2024/06/05 17:18
涉及到的方法一共有下面几个:
1.view获取自身原始的坐标:getLeft(),getTop(),getRight(),getBottom()
getLeft():获取到的是view自身的左边到其父布局左边的距离
getTop():获取到的是view自身的顶边到其父布局顶边的距离
getRight():获取到的是view自身的右边到其父布局左边的距离
getBottom():获取到的是view自身的底边到其父布局顶边的距离
2.view获取自身经过偏移后的坐标:getX(),getY()
getX():获取到的 mLeft+getTranslationX(),mLeft就是getLeft()的值
getY():获取到的 mTop+getTranslationY(),mTop就是getTop()的值
3.view获取自身的宽高:getHeight(),getWidth()
getHeight():获取到的 mTop-mBottom的值
getWidth():获取到的 mRight-mLeft的值
4.view获取内容的偏移量:getScrollX(),getScrollY()
5.view获取自身的偏移量:getTranslationX(),getTranslationY()
6.motionEvent获取点击事件的坐标:getX(),getY(),getRawX(),getRawY()
getX():获取点击事件相对控件左边的x轴坐标,即点击事件距离控件左边的距离
getY():获取点击事件相对控件顶边的y轴坐标,即点击事件距离控件顶边的距离
getRawX():获取点击事件相对整个屏幕左边的x轴坐标,即点击事件距离整个屏幕左边的距离
getRawY():获取点击事件相对整个屏幕顶边的y轴坐标,即点击事件距离整个屏幕顶边的距离
下面有一张从炸斯特的博客android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)上copy过来的图,清晰明了地解释了以上的一些定义:
我自己也写了一个demo
代码如下:
public class ViewTestActivity extends Activity implements View.OnClickListener { private String TAG = "ViewTestActivity"; private View mSlider; private View mScrolltoBtn; private View mLayoutBtn; private View mTranslateBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_viewtest); initView(); } private void initView() { mSlider = findViewById(R.id.slider); mScrolltoBtn = findViewById(R.id.scrollto); mLayoutBtn = findViewById(R.id.layout); mTranslateBtn = findViewById(R.id.translate); mScrolltoBtn.setOnClickListener(this); mLayoutBtn.setOnClickListener(this); mTranslateBtn.setOnClickListener(this); mSlider.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.scrollto: mSlider.scrollBy(0, 10); break; case R.id.layout: RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mSlider.getLayoutParams(); params.bottomMargin += 10; mSlider.requestLayout(); break; case R.id.translate: ObjectAnimator translationY = ObjectAnimator.ofFloat(mSlider, "translationY", -500); translationY.start(); break; case R.id.slider: Toast.makeText(ViewTestActivity.this, "I'm clicked", Toast.LENGTH_SHORT).show(); break; } Log.d(TAG, "top=" + mSlider.getTop()); Log.d(TAG, "y=" + mSlider.getY()); Log.d(TAG, "translationY=" + mSlider.getTranslationY()); Log.d(TAG, "scrollY=" + mSlider.getScrollY()); Log.d(TAG, "--------------------------------------------"); }}页面布局如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/slider" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:background="@android:color/holo_red_light" android:gravity="center" android:padding="30dp" android:text="hello" android:textSize="24dp"/> <Button android:id="@+id/scrollto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="scrollto"/> <Button android:id="@+id/layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/scrollto" android:text="layout"/> <Button android:id="@+id/translate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/layout" android:text="translate"/></RelativeLayout>
在模拟器上跑起来之后是这样的:
有如下几个发现:
1.当我点击scrollto按钮的时候,根据log发现,只有scrollY的值发生了改变,从效果上来看就是红色滑块的内容hello向上偏移了,证明了scrollTo()(scrollBy()内部就是调用的srcollTo())只改变view的内容而非其本身。
2.当我点击layout按钮时,根据log发现,只有top和y的值发生了改变并且两个值始终一样,因为每次都是页面重新布局了,并没有内容的偏移,也没有view自身的偏移。
3.当我点击translate按钮时,根据log发现,top的值没变,y的值和translationY的值发生了改变,但是遵循y = top + translationY。
- View关于坐标的几个方法和属性
- View的几个基本位置属性和滑动效果的几种实现方法
- 关于view的坐标问题
- View 和MotionEvent 提供的获取坐标的方法
- XMLHttpRequest 对象的几个方法和属性
- window对象的几个属性和方法
- ScriptManager的几个属性和方法
- 自定义View的基础属性和方法
- 关于View的属性
- view和canvas的坐标
- View获取自身坐标的方法和点击事件中坐标的获取文章标题
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- 俄罗斯方块.C语言
- jdbc和Hibernate (oracle和mySql)连接数据库 代码步骤
- 简单工厂模式(由专门的类来创建实例)
- Java序列化机制详解
- 配置管理·十六
- View关于坐标的几个方法和属性
- web项目的Linux服务器部署发布以及域名访问
- 你不知道的关于淘宝公司的秘密——淘宝成立内幕
- 网站前端设计中解决不同分辨率电脑测量尺寸不同的问题
- 【逻辑思考】有时评论比内容更精彩
- 软件开发技术职位分析及职业规划
- spfa
- 前端面试(一)
- 0507