`
abc20899
  • 浏览: 934884 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 坐标与宽高研究

阅读更多
一、坐标研究一

每个view group包含一个宽度和高度(layout_width和layout_height),每个view必须定义它们。很多LayoutParams也包括可选的margin(空白)和border(边界)。

你可以使用精确值来指定宽度和高度,尽管你可能很少这样使用。更常见的是,你把view对象的大小设为和它的内容相合适,或者尽可能的大将其父对象填满(分别对应wrap_content和fill_parent)。可接受的长度单位在Available Resources文档中。

Layout Position

view的几何性质就是它所在矩形的几何性质。一个view的位置用一对left和top坐标表示,两个长度用width和height来表示。位置和长度的单位是像素。

通过调用getLeft()和getTop()可以得到一个View的位置。这两个方法返回的是相对于其父元素的位置,例如,如果getLeft()返回20,则表示它和其直接父元素的坐边界的距离是20像素。

另外,有一些方法的存在只是为了写程序的方便,如getRight()和getBottom()。getRight()和getLeft()+getWidth()的作用是一样的。

Size, Padding and Margins

一个view的大小使用宽度和高度来描述。一个view实际上有两组高度和宽度值。

第一组成为测量宽度和测量高度。这些长度定义了一个view希望在它的父view中的大小。测量长度可以使用getMesuredWidth()和 getMeasuredHeight()来得到。

第二组为宽度和高度,有时被成为绘制宽度和绘制高度。这些长度定义了view在屏幕上的实际大小。这些值可能和测量长度不同。它们可以通过getWidth()和getHeight()得到。

为了测量它的长度,一个view将它的padding考虑在内。padding使用像素来表示,可以设定上下左右各个方向上的padding。 padding可以用来将view产生一个位移。例如,一个2像素的左padding将使view向右偏移2个像素。可以使用 setPadding(int,int,int,int)来设定,由getPaddingLeft(), getPaddingTop(), getPaddingRight() 和 getPaddingBottom()来获取。

虽然一个view可以定义一个padding,但它并不支持margin。view group支持margin。

如果你的某个Activity中实现OnTouchListener接口,需要重写onTouch(View view,MotionEvent event)这个方法,getRawX()和getRawY()获得的是相对屏幕的位置,getX()和getY()获得的永远是view的触摸位置坐标(这两个值不会超过view的长度和宽度)。

如果重写Activity的onTouchEvent(MotionEvent event),这个时候获得的是屏幕点击位置的坐标。event.getX()与 event.getRawX()获取的值是一样的,event.getY()  与 event.getRawY()获取的值是一样,还能获取触摸标题栏时的坐标位置,但是触摸状态栏时的坐标位置不能获得。(注:Activity上有两段宽度:一个是状态栏,一个是标题栏,每一个宽度都占了25像素)

理解view.getLeft() getTop() getRight() and getBottom()
如题,其实吧view看做一个矩形,分别表示的是一个view的左边,上边,右边,下边距离他的父组件的距离。
getRight() =getLeft() + getWidth()。 getBottom()= getTop() + getHeight() ;初学者搞明白很重要,
其实以前我也不太明白,我也受教了。
分享到:
评论

相关推荐

    Android 贴纸样式标签

    在XML布局文件中,将自定义View作为子元素,并设置其属性,如宽高、位置等。 6. **性能优化**: 为了保证良好的性能,需要注意避免过度绘制。合理利用硬件加速,设置`setLayerType(View.LAYER_TYPE_HARDWARE, null)`...

    Android 自定义ViewGroup 实战篇 -> 实现FlowLayout源码程序

    关于标签(Tag)的使用,Android中的`View.setTag()`和`View.getTag()`方法常用于存储与视图相关的数据,可以提高代码的可读性和复用性。在FlowLayout中,我们可能用标签来标识某子视图的特殊状态或属性。 在压缩包...

    Android视频裁剪-含裁剪View

    注意,裁剪区域的宽高比例必须与`-vf`参数中的`W:H`一致。 当用户确定裁剪区域后,可以启动一个异步任务,执行上述FFmpeg命令,将裁剪后的视频保存到本地。同时,为了提供良好的用户体验,可以显示一个进度条或者...

    android 图片拼接 缩放 特效 拖动 翻转

    这个方法需要原始Bitmap、目标宽度和目标高度作为参数,可以设置保持宽高比。注意,缩放可能会导致图片失真,因此需要根据应用场景选择合适的缩放模式。 3. **图片特效**: Android提供了多种方式实现图片特效。...

    2011.09.27(2)——— android ImageView上下同时拉伸的效果

    这可能涉及到计算图像的宽高比例,以及在绘制时对坐标系统的精确调整。 此外,博客作者可能还讨论了如何使用Android的布局管理器(如LinearLayout或RelativeLayout)与自定义的ImageView配合,以实现所需的布局效果...

    Android雷达扫描效果

    8. **布局与尺寸适配**:确保自定义View在不同分辨率和屏幕尺寸的设备上都能正常显示,需要考虑dp与px的转换,以及宽高比的适配。 通过以上步骤,我们可以构建一个基本的Android雷达扫描效果。实际开发中,可能还...

    Android代码-FloatWindowProject

    "FloatWindowProject-master"这个项目可能包含了上述所有步骤的完整实现,开发者可以通过阅读和研究源代码,深入了解如何在Android应用中实现一个功能完备的悬浮窗。对于Android开发者来说,掌握悬浮窗的实现是提升...

    Android 垂直 Seekbar.zip

    同时,需要覆盖onMeasure()方法,确保View的宽高符合垂直滑动的需求。 2. 使用第三方库:Android社区有许多优秀的开源库提供了垂直Seekbar的功能,如android-vertical-seekbar库,它已经封装好了所有的细节,开发者...

    Android OpenGL入门教程

    2. `onSurfaceChanged(GL10 gl, int width, int height)`:当视图大小改变时调用,主要用于调整视图的宽高比,重置投影矩阵。 3. `onDrawFrame(GL10 gl)`:每次视图更新时调用,执行实际的渲染操作。在此方法中,...

    Android图片转换器代码

    `Bitmap.createScaledBitmap()` 可以按比例缩放图片,同时保持原图的宽高比。 6. **图片裁剪**: 裁剪图片通常涉及`Bitmap.createBitmap()` 的使用,配合源Bitmap的坐标和目标尺寸,创建一个新的Bitmap区域。 7. **...

    Android 实现半透明的popupwindow的源码-IT计算机-毕业设计.zip

    2. 创建PopupWindow实例,传入创建的View和其宽高。 3. 设置PopupWindow的相关属性,如背景透明度、动画效果等。 4. 显示PopupWindow,可以通过showAsDropDown()或showAtLocation()方法定位。 对于半透明效果的实现...

    Android应用源码之使用代码绘制一个电池 (非图片)-IT计算机-毕业设计.zip

    记得设置坐标系的起点(x, y),以及矩形的宽高。 4. **绘制电量指示条** 使用drawArc()方法来绘制电量指示条,它是一个圆弧,代表电池的充电状态。通过改变圆弧的起始角度和扫过角度,我们可以动态地表示电池的...

    Android程序研发源码悬浮Activity并可拖动(访悬浮歌词).zip

    使用 `LayoutParams` 可以修改视图的位置和大小,例如 `setX()`、`setY()` 方法用于设置视图的横纵坐标,`setWidth()` 和 `setHeight()` 设置视图的宽高。 为了实现拖动功能,我们需要监听用户的触摸事件。在...

    安卓头像制作图片圆角剪裁相关-android按比例裁剪上传.rar

    这通常涉及到计算裁剪区域的坐标,并确保裁剪后的图片保持原始宽高比。`Matrix`类可以帮助我们进行复杂的图像变换,包括缩放、旋转和平移等操作。 在压缩包中的"android按比例裁剪上传"文件,可能是包含了一个简单...

    安卓图片加载缓存相关-Android加载微博长图双击放大支持缩放单击返回.rar

    例如,CENTER_CROP保持宽高比填充视图,FIT_CENTER按比例缩放图片居中显示。 5. 自定义View:在处理复杂的图片显示,如微博长图时,可能需要自定义View来实现特定功能,比如滚动和缩放。这可能涉及到计算视图的滚动...

    Android_View_and_ViewGroup:#研究Android视图和视图组..

    每个`View`都有自己的坐标系统,可以通过设置宽高(width和height)来决定其在屏幕上的大小。`View`具备以下关键特性: 1. **绘制**:`View`通过`onDraw()`方法进行绘制,开发者可以重写这个方法以自定义UI。 2. **...

    基于H5的图像处理技术研究.docx

    ### 基于H5的图像处理技术研究 #### 技术背景与需求分析 ...综上所述,通过对H5 Canvas技术的研究与应用,项目成功实现了在线图像处理的各项功能,有效提升了档案存储与检索系统的实用性与用户体验。

    Android自定义相机demo-手动触摸对焦、取景模式、拉近

    这通常通过监听`SurfaceView`的触摸事件实现,将触摸坐标传递给相机服务进行对焦。使用`Camera.Parameters`对象的`setFocusMode()`方法来设置对焦模式,如`Camera.Parameters.FOCUS_MODE_TOUCH_AF`。 2. 取景模式:...

    Android常用布局的介绍PPT与源码.zip

    本资料“Android常用布局的介绍PPT与源码.zip”提供了关于Android布局的详细讲解以及配套的源码示例,旨在帮助开发者深入理解并熟练运用各种布局类型。 首先,PPT部分可能会涵盖以下几个主要知识点: 1. **线性...

    Android 自定义view实现水波纹动画效果

    `onMeasure()`用于测量视图的尺寸,`onSizeChanged()`在尺寸改变时调用,获取视图的实际宽高,而`onDraw()`则是绘制视图内容的核心方法。 **一:标准正余弦水波纹** 标准的正余弦水波纹可以通过数学公式模拟。正...

Global site tag (gtag.js) - Google Analytics