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

 更新时间:2017年02月21日 16:37:42   作者:觅食的松鼠  
这篇文章主要介绍了Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

以自定义ImageView为例:

/**
 * 可拖拽ImageView
 * Created by admin on 2017/2/21.
 */
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获取点击屏幕的位置坐标

    Android获取点击屏幕的位置坐标

    这篇文章主要为大家详细介绍了Android获取点击屏幕的位置坐标,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • android Activity相对布局的使用方法

    android Activity相对布局的使用方法

    Activity相对布局控件的位置是与其周围控件的位置相关的,从名字可以看出来,这些位置都是相对的,确定出了其中一个控件的位置就可以确定另一个控件的位置,下面用实例说明Activity相对布局的使用方法
    2013-11-11
  • Android开发之XML文件解析的使用

    Android开发之XML文件解析的使用

    本篇文章介绍了,Android开发之XML文件解析的使用。需要的朋友参考下
    2013-04-04
  • Android实现屏幕旋转四个方向准确监听

    Android实现屏幕旋转四个方向准确监听

    这篇文章主要为大家详细介绍了Android实现屏幕旋转四个方向准确监听,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法

    Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法

    这篇文章主要介绍了Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法,实例分析了Android4.4下针对读写限制的修改技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android引入OpenCV的示例

    Android引入OpenCV的示例

    本篇文章主要介绍了Android引入OpenCV的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Android输入框实时模糊搜索效果的示例代码

    Android输入框实时模糊搜索效果的示例代码

    这篇文章主要介绍了Android输入框实时模糊搜索效果的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 剖析Android Activity侧滑返回的实现原理

    剖析Android Activity侧滑返回的实现原理

    在很多的App中,都会发现利用手指滑动事件,进行高效且人性化的交互非常有必要,那么它是怎么实现的呢,本文给大家解析实现原理,对Activity侧滑返回实现代码感兴趣的朋友一起看看吧
    2021-06-06
  • Android中Activity过渡动画的实例讲解

    Android中Activity过渡动画的实例讲解

    在android5.0 以上版本中,google为我们提供了几种activity切换的过渡动画,目的是为了让 activity 切换转场更加美观,下面这篇文章主要给大家介绍了关于Android中Activity过渡动画的相关资料,需要的朋友可以参考下
    2021-11-11
  • Android仿银行客户签名并且保存签名的截图文件并命名为本地时间

    Android仿银行客户签名并且保存签名的截图文件并命名为本地时间

    本文通过实例代码给大家介绍了Android仿银行客户签名并且保存签名的截图文件并命名为本地时间,需要的朋友可以参考下
    2017-07-07

最新评论