返回顶部
首页 > 资讯 > 移动开发 >Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置
  • 439
分享到

Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置

自动自定义viewAndroid 2022-06-06 04:06:41 439人浏览 八月长安
摘要

以自定义ImageView为例: public class FloatingImageView extends ImageView{ public FloatingIm

以自定义ImageView为例:



public class FloatingImageView extends ImageView{
  public FloatingImageView(Context context) {
    super(context);
  }
  public FloatingImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }
  public FloatingImageView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
  }
  @Targetapi(Build.VERSioN_CODES.LOLLIPOP)
  public FloatingImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
  }
  int startX;
  int startY;
  int left;
  int top;
  int[] temp = new int[]{ 0, 0 };
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    boolean isMove = false;
    int x = (int) event.getRawX();
    int y = (int) event.getRawY();
    switch (event.getAction()){
      case MotionEvent.ACTION_DOWN: // touch down so check if the
        startX = x;
        startY = y;
        temp[0] = (int) event.getX();
        temp[1] = y - getTop();
        break;
      case MotionEvent.ACTION_MOVE: // touch drag with the ball
        left = x - temp[0];
        top = y - temp[1];
        if(left < 0){//控制左边界不超出
          left = 0;
        }
        layout(left, top, left + getWidth(),top + getHeight());//自由拖拽
        break;
      case MotionEvent.ACTION_UP:
        if (Math.abs(x - startX) > 2 || Math.abs(y - startY) > 2){//判断是否移动,再一定范围内不算是移动,解决触发事件冲突
          //将最后拖拽的位置定下来,否则页面刷新渲染后按钮会自动回到初始位置
          //注意父容器
          RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) getLayoutParams();
          lp.setMargins(left, top,0,0);
          setLayoutParams(lp);
          //确定是拖拽
          isMove = true;
         }
        break;
    }
    return isMove ? true : super.onTouchEvent(event);
   }
}

以上所述是小编给大家介绍的Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

您可能感兴趣的文章:android ListView和GridView拖拽移位实现代码Android自定义ListView实现仿QQ可拖拽列表功能android RecyclerView侧滑菜单,滑动删除,长按拖拽,下拉刷新上拉加载Android利用RecyclerView实现全选、置顶和拖拽功能示例Android中在GridView网格视图上实现item拖拽交换的方法Android使用RecycleView实现拖拽交换item位置Android自定义View实现可以拖拽的GridViewAndroid ReboundScrollView仿iOS拖拽回弹效果Android使用CardView作为RecyclerView的Item并实现拖拽和左滑删除Android自定义View实现拖拽效果


--结束END--

本文标题: Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置

本文链接: https://lsjlt.com/news/22204.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作