【35】getMeasuredHeight()与getHeight()的区别

当屏幕可以显示完全控件时,即能包裹内容的时候,getMeasuredHeight()与getHeight()获取的值是相等的。
当View超出屏幕后,才能看出他们的区别:
(1)getMeasuredHeight()方法获取的是实际View的高度,与屏幕无关。
(2)getHeight()获取的高度与屏幕有关。如果控件超出屏幕时,getHeight()方法只能获取到该控件在屏幕中显示的高度。
当控件超出屏幕的高度时,控件通过getMeasuredHeight()方法获取的高度=getHeight()获取的高度+控件超出屏幕的高度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现单指滑动图片控制边界,可以通过以下几个步骤实现: 1. 获取手指滑动的距离 当手指在屏幕上滑动时,可以通过触摸事件获取手指的坐标,并计算手指在屏幕上滑动的距离。 2. 移动图片 根据手指滑动的距离,可以计算出图片应该移动的距离,并通过调整图片的位置实现移动。 3. 控制边界 在移动图片时,需要判断图片是否已经滑动到了边界。如果图片已经滑动到了边界,则不再继续移动图片,避免图片滑出屏幕。 下面是一个简单的示例代码,实现了单指滑动图片控制边界的功能: ```java public class MainActivity extends AppCompatActivity implements View.OnTouchListener { private ImageView imageView; private float lastX; private float lastY; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = findViewById(R.id.image_view); imageView.setOnTouchListener(this); } @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = event.getRawX(); lastY = event.getRawY(); break; case MotionEvent.ACTION_MOVE: float deltaX = event.getRawX() - lastX; float deltaY = event.getRawY() - lastY; lastX = event.getRawX(); lastY = event.getRawY(); float translationX = imageView.getTranslationX() + deltaX; float translationY = imageView.getTranslationY() + deltaY; // 控制边界 if (translationX < 0) { translationX = 0; } if (translationX > imageView.getWidth() - imageView.getMeasuredWidth()) { translationX = imageView.getWidth() - imageView.getMeasuredWidth(); } if (translationY < 0) { translationY = 0; } if (translationY > imageView.getHeight() - imageView.getMeasuredHeight()) { translationY = imageView.getHeight() - imageView.getMeasuredHeight(); } imageView.setTranslationX(translationX); imageView.setTranslationY(translationY); break; case MotionEvent.ACTION_UP: break; } return true; } } ``` 在这个示例代码中,我们通过重写 `onTouch` 方法来处理触摸事件。在 `ACTION_DOWN` 事件中记录手指的初始位置,在 `ACTION_MOVE` 事件中计算手指移动的距离,并通过调整图片的位置实现移动。在移动图片时,我们通过判断图片是否已经滑动到了边界来控制边界。最后,在 `ACTION_UP` 事件中清空手指的位置记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值