首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小 Demo 大知识 - 控制 Button 移动来学 Android 坐标

view获取自身坐标 如上图所以,绿色区域的父视图是黄色区域,所以left是55,top是55。 黄色区域的父视图是蓝色区域,所以left是60,top是115。 2.view获取自身宽高 没错。...当你高兴的这么写后,你会发现你移动后的Button总是在鼠标点击的下方。你会发现。X轴的的确已经正确了。但是Y轴还是错误。如下图所示: Paste_Image.png 这时候你一定会问,WHY???...其中getX()和getY()是在你点击下去的时候就获取的。也就是在motionEvent.getAction() == MotionEvent.ACTION_DOWN的时候去获取这二个值即可。...因为在motionEvent.getAction() == MotionEvent.ACTION_MOVE的时候去获取getX()和getY()可能因为你拖动的速度原因造成值不同,比如你拖动很快,鼠标先过去了...这时候的getX()及getY()都不同。 既然点击按钮后可以拖动Button,那肯定对Button设置了OnTouch监听。

16310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    , 指向图片坐标比例不变 , 图片尺寸发生了改变 , 重新计算当前图片的放置位置 , 并设置图片位置 ; 这样图片缩放时 , 始终可以保证鼠标指向的部位保持位置不变 ; 1、保存当前鼠标指针指向的位置..., 再根据鼠标指针指向的位置和比例 , 结合图片缩放后的尺寸 , 重新计算画布偏移的位置 , 以达到鼠标指向的图片元素位置基本保持不变的目的 ; /** * 计算新的比例 *...; // 缩放后的图像宽度 double imageHeight = image.getHeight(null) * scale; // 缩放后的图像高度 // 计算整张画布宽度...image.getHeight(null) * scale; // 缩放后的图像高度 // 计算整张画布宽度 double canvasX = imageWidth...int imageHeight = (int) (image.getHeight(null) * scale); // 缩放后的图像高度 g2.drawImage(image

    2.8K10

    【Android】手把手教你上滑解锁的效果

    类中有computeScroll方法,它能实现流畅滚动的原因是,它将初始位置和目标滑动位置之间的距离分成N份依次调用scrollTo方法,通过postInvalidate在每次调用scrollTo方法后刷新视图...break; case MotionEvent.ACTION_MOVE: // 获取当前滑动的y轴坐标 float curY = event.getY...问题与改进 问题出现 基于上述的扩展,在RecyclerView的item里的控件添加点击事件后,发现推荐页无法按预期显示隐藏:无论滑动多短的距离甚至是向上滑动,只要是在屏幕下方滑动,推荐页总是会自己显示出来...通过打印了Log,发现原因出在onTouchEvent的ACTION_DOWN里面,即:ACTION_DOWN没有触发,但是ACTION_UP触发了,导致上述的downY[0]值为0,而curY很大,因此得到了下滑距离很大的假象...break; } return false; } }); 参考 Android Scroller简单用法 Android学习Scroller(四)——实现拉动后回弹的布局

    2.7K20

    SmartRefreshLayout dispatchTouchEvent 解读

    示例场景:多手指情况下,一手指不变,另一手指上推二楼至不可见后松手,二楼突然变换至下拉状态。 问题原因 event.getY() 返回的可能是任意的一个手指的位置。...H 控件高度 x 物理偏移值spinner * 拖动比率 y y = M(1-100^(-x/H)) 很显然,随着spinner 增大,100^(-x/H) 这个幂次函数无限接近于0。...().setTranslationY() 根据上述代码,可以发现进行视图移送的是moveSpinner方法,moveSpinnerInifitely 仅是 按照 物理偏移值+当前状态 区分case,计算真正拖动值...H 控件高度 x 物理偏移值spinner * 拖动比率 y y = M(1-100^(-x/H)) 很显然,随着spinner 增大,100^(-x/H) 这个幂次函数无限接近于0。...().setTranslationY() 根据上述代码,可以发现进行视图移送的是moveSpinner方法,moveSpinnerInifitely 仅是 按照 物理偏移值+当前状态 区分case,计算真正拖动值

    1.8K10

    【Android 应用开发】多点触控 ( 多点触控事件 | PointerId | PointerIndex | 坐标获取 | 触摸点个数 )

    Pointer 触摸点 : ① PointerId : 触摸点标识 , 一旦赋值不可更改 ; 手指按下 , 该触摸点产生 自带触摸点 ID 属性 , 以及分配一个触摸点索引 , 当手指抬起 , 该触摸点...PointerId 与 PointerIndex 运行机制 : PointerId 触摸点 ID 标识 , 只要按下 , 不抬起 , 值不变 , 如果中间手指抬起 , 那么出现中间的 ID 空置的情况...PointerId 与 PointerIndex 互相转化 ---- PointerId 与 PointerIndex 关联 及 转化关系 : ① 两者特点 : PointerId 是固定不变的 , PointerIndex...PointerId : 唯一性的表示一个触摸点 , 该值如果触摸上 , 任意移动 , 只要不抬起 , 就不变 ; PointerIndex : 触摸点的索引 ,...开始计数的连续的数值 , 同样是第 0 个索引 , 代表的可能是不同触摸点 ; 运行机制 : PointerId : 只要按下 , 不抬起 , 值不变

    1.4K20

    Android自定义组合控件---教你如何自定义下拉刷新和左滑删除

    并没有太大区别,今天分享给大家,其实并不难,但是不知道为什么网上没有比较好的Demo,当你的项目真的很急的时候,又没有比较好的Demo,那么“那条友谊的小船儿真是说翻就翻啊”,好了,下面先来具体看一下实现后的效果吧...public int getVisiableHeight() { return mContainer.getHeight(); } } 3.HeaderView定义结束后,...private boolean mPullRefreshing = false; // 是否正在刷新 //上拉尾部视图 private LinearLayout mFooterView...} } setSelection(0); // scroll to top each time } /** * 重置头部视图高度...mHeaderViewHeight) { return; } int finalHeight = 0; // 默认 //如果正在刷新并且滑动高度大于头部高度

    1.4K10

    自定义 View 系列(一)-坐标系和视图坐标系

    视图坐标 Android 中除了上面所说的这种坐标系之外,还有一个视图坐标系,他描述了子视图在父视图中的位置关系。这两种坐标系并不矛盾也不复杂,他们的作用是相辅相成的。...只不过在视图坐标系中,原点不再是 Android 坐标系中的屏幕左上角,而是以父视图左上角为坐标原点。 ?...image 在触控事件中,通过 getX() 和 getY() 所获得的坐标就是视图坐标中的坐标。 在 Android 中,系统提供了非常多的方法来获取坐标值、相对距离等。...View自身的右边到其父布局左边的距离 **getBottom(): **获取到的是View自身的底边到其父布局顶边的距离 另外View获取自身宽高 **getHeight(): **获取View自身高度...**getWidth(): **获取View自身宽度 MotionEvent提供的方法: **getX(): **获取点击事件距离控件左边的距离,即视图坐标 **getY(): **获取点击事件距离控件东边的距离

    93640

    Android多点触控技术实战,自由地对图片进行缩放和移动

    */ private float currentBitmapWidth; /** * 记录当前图片的高度,图片被缩放时,这个值会一起变动 */ private float currentBitmapHeight...else if (width - translateX > scaledWidth) { translateX = width - scaledWidth; } } // 如果当前图片高度小于屏幕高度...,以保证缩放后中心点位置不变 matrix.postTranslate(translateX, translateY); totalTranslateX = translateX; totalTranslateY...translateY); totalTranslateY = translateY; totalRatio = initRatio = ratio; } else { // 当图片高度大于屏幕高度时...如果图片的宽度大于屏幕的宽度,或者图片的高度大于屏幕的高度,则将图片进行等比例压缩,让图片的的宽或高正好等同于屏幕的宽或高,保证在初始化状态下图片一定能完整地显示出来。

    2.3K50

    Android 动画:你真的会使用插值器与估值器吗?(含详细实例教学)

    、加速变化 等等 1.2 应用场景 实现非线性运动的动画效果 非线性运动:动画改变的速率不是一成不变的,如加速 & 减速运动都属于非线性运动 1.3 具体使用 a....只不过经过了余弦运算之后,最终的结果不再是匀速增加的了,而是经历了一个先加速后减速的过程 // 所以最终,fraction值 = 运算后的值 = 先加速后减速 // 所以该差值器是先加速再减速的...),即决定的是变化趋势;而接下来的具体变化数值则交给 而估值器 属性动画特有的属性 2.2 应用场景 协助插值器 实现非线性运动的动画效果 非线性运动:动画改变的速率不是一成不变的...* (endPoint.getX() - startPoint.getX()); float y = startPoint.getY() + fraction * (endPoint.getY...() - startPoint.getY()); // 将计算后的坐标封装到一个新的Point对象中并返回 Point point = new Point(x, y);

    1.8K10

    Carson带你学Android:自定义动画神器-插值器与估值器(含实例教学)

    等等 1.2 应用场景 实现非线性运动的动画效果 非线性运动:动画改变的速率不是一成不变的,如加速 & 减速运动都属于非线性运动 1.3 具体使用 a....只不过经过了余弦运算之后,最终的结果不再是匀速增加的了,而是经历了一个先加速后减速的过程 // 所以最终,fraction值 = 运算后的值 = 先加速后减速 // 所以该差值器是先加速再减速的...),即决定的是变化趋势;而接下来的具体变化数值则交给 而估值器 属性动画特有的属性 2.2 应用场景 协助插值器 实现非线性运动的动画效果 非线性运动:动画改变的速率不是一成不变的,如加速 & 减速运动都属于非线性运动...* (endPoint.getX() - startPoint.getX()); float y = startPoint.getY() + fraction * (endPoint.getY...() - startPoint.getY()); // 将计算后的坐标封装到一个新的Point对象中并返回 Point point = new Point

    1K20

    提高效率 |ArcGIS Pro 中所有快捷键一网打尽

    在 3D 中,照相机在保持照相机角度和高度不变的同时会向右移动一个屏幕宽度。 Esc 取消地图绘制。 F5 刷新活动视图。 Ctrl+F 打开定位窗格。...在 3D 中,照相机在保持照相机角度和高度不变的同时会向下移动一个屏幕宽度。Home向左移动一个屏幕大小。在 2D 中,向左平移一个屏幕宽度。...在 3D 中,照相机在保持照相机角度和高度不变的同时会向左移动一个屏幕宽度。End向右移动一个屏幕大小。在 2D 中,向右平移一个屏幕宽度。...在 3D 中,照相机在保持照相机角度和高度不变的同时会向右移动一个屏幕宽度。Esc取消地图绘制。 F5刷新活动视图。 Ctrl+F打开定位窗格。要了解有关定位窗格的详细信息,请参阅在地图上查找地点。...可以选择使用 A 和 D 键更改方向。同时使用箭头键和鼠标指针可产生行驶和环顾四周的运动感。 U 增加照相机的高度。 J 降低照相机的高度。 W 向上倾斜照相机以更改场景视图方向。

    1.3K20

    深入详解iOS适配技术

    当我们点击子视图内部的虚线时,同样也变为实线,代表子视图的宽度或者高度被固定了。...setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin]; // 子视图距离父视图左右间距不变...UIViewAutoresizingFlexibleHeight // 自动弹性的调整自己的高度,保证与superView顶部和底部的距离不变。...,右边距固定,上边距固定,下边距固定(下图的xib中预览效果与实际效果有差,实际效果是view的上边距不变)(这种约束方式相当于上下间距固定,高度固定,那么父控件高度缩放的时候就会产生冲突,所以这种布局方式也是不合理的...XCode5及其之后的版本,默认新建的项目就是使用AutoLayout,不过我们可以在项目中进行更改,如下图。 ?

    8.5K70
    领券