Android实现按钮拖拽还原功能

具体代码如下所示:

public class MainActivity extends AppCompatActivity {
  private ImageButton ibOk ;
  private int lastX;
  private int lastY;
  private int startLeft;
  private int startRight;
  private int startTop;
  private int startBottom;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ibOk = (ImageButton) findViewById(R.id.ib_ok);
    ibOk.setOnTouchListener(new View.OnTouchListener() {
      @Override
      public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        //获取手机触摸的坐标
        int x = (int) event.getX();
        int y = (int) event.getY();
        switch (action) {
          case MotionEvent.ACTION_DOWN://按下,获取小球初始的位置
            startLeft = ibOk.getLeft();
            startRight = ibOk.getRight();
            startTop = ibOk.getTop();
            startBottom = ibOk.getBottom();
            lastX = x;
            lastY = y;
            break;
          case MotionEvent.ACTION_MOVE://移动,小球跟随手指的移动
            int offsetX = x - lastX;
            int offsetY = y - lastY;
            ibOk.layout(ibOk.getLeft() + offsetX, ibOk.getTop() + offsetY,
                ibOk.getRight() + offsetX, ibOk.getBottom() + offsetY);
            break;
          case MotionEvent.ACTION_UP://当手指抬起时,回到小球初始的位置
            ibOk.layout(startLeft, startTop, startRight, startBottom);
            break;
        }
        return true;

      }
    });
  }

}

代码解释: 图一,是完整代码。按钮可以随意拖拽(X+Y轴),抬手,按钮恢复到初始位置。 图二区域,按此方式可以实现横向拖拽,类似接打电话动画效果,左边接听,右边挂断。

总结

以上所述是小编给大家介绍的Android实现按钮拖拽还原功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Android自定义可拖拽的悬浮按钮DragFloatingActionButton

    悬浮按钮FloatingActionButton是Android 5.0系统添加的新控件,FloatingActionButton是继承至ImageView,所以FloatingActionButton拥有ImageView的所有属性.本文讲解的是一个实现了可拖拽的悬浮按钮,并为此添加了类似于qq的吸附边框的功能.在此之前,先了解下其简单的使用方式吧: 首先你得添加其依赖 compile 'com.android.support:design:25.3.1' 然后在布局文件中使用. <andro

  • Android自定义view实现拖拽选择按钮

    本文实例为大家分享了Android实现拖拽选择按钮的具体代码,供大家参考,具体内容如下 github地址:https://github.com/xuezj/DragChooseDemo DragChooseDemo 效果图 Attributes属性(布局文件中的自定义属性) 半径.文字大小.按钮个数注意配合使用,以达到最佳效果 方法 使用 布局文件中的使用 <com.xuezj.dragchooselibrary.view.DragChooseView android:id="@+id/m

  • Android实现按钮拖拽还原功能

    具体代码如下所示: public class MainActivity extends AppCompatActivity { private ImageButton ibOk ; private int lastX; private int lastY; private int startLeft; private int startRight; private int startTop; private int startBottom; @Override protected void on

  • Android条目拖拽删除功能实例代码

    项目中需求,要做条目条目拖拽删除效果,实际效果和QQ消息删除一样,侧滑有制定和删除. 效果图 第一步效果图 1.0自定义控件 SwipeLayout 继承FrameLayout重写里面三个构造方法,分别调用initView(). 2.0在布局中使用自定义控件 3.0在initView()方法中,创建拖拽辅辅助工具 ViewDragHelper() 该方法需要传入回调 MyCallBack() 4.0,创建MyCallBack()回调,继承ViewDragHelper.Callback 在回调中

  • Android ViewDragHelper实现京东、淘宝拖拽详情功能的实现

    先上效果图,如果大家感觉不错,请参考实例代码,效果图如下所述: 要实现这个效果有三种方式: ① 手势 ② 动画 ③ ViewDragHelper 这里我使用的是ViewDragHelper类. public class ViewDragLayout extends ViewGroup { //垂直方向的滑动速度 private static final int VEL_THRESHOLD = 300; //垂直方向的滑动距离 private static final int DISTANCE_T

  • Android实现可拖拽列表和多选功能

    本文实例为大家分享了Android实现可拖拽列表和多选的具体代码,供大家参考,具体内容如下 这是我已经完成的一个已经上线的OA软件的一个模块,这个模块的功能不多,已经放到GitHub上面开源了,有感兴趣的朋友可以看看UIFrame 主窗口JAVA代码 /** * 编辑状态下长按拖动条目 * 1.通过ItemTouchHelper.Callback实现长按拖动 * 2.通过isEditable的值判断是否编辑状态,初值是false * 3.切换编辑状态要把isEditable的值取反,并改变复选框

  • Android中RecyclerView拖拽、侧删功能的实现代码

    废话不多说,下面展示一下效果. 这是GridView主文件实现. public class GridViewActivity extends AppCompatActivity { RecyclerView mRecyclerView; List<String> mStringList; RecyclerAdapter mRecyAdapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { s

  • Android自定义ListView实现仿QQ可拖拽列表功能

    我们大致的思路,其实是这样子的,也是我的设想,我们可以先去实现一个简单的ListView的数据,但是他的Adapter,我们可以用系统封装好的,然后传递进去一个实体类,最后自定义一个listview去操作,所以我们先把准备的工作做好,比如? list_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

  • Android实现View拖拽跟随手指移动效果

    今天想实现这个功能,但是网上搜索代码,都是利用setPadding,setMargin 等方法去实现的,这在Android 4.0 以前是没问题的,但是,android 4.0 后系统已经提供了更简单的方法给我们用了,就是setTranslationX() 和setTranslationY() .这两个是View的属性方法.现在我就用这两个方法实现一个View可以跟着手指移动拖拽的效果.代码非常非常简单: public class DragView extends TextView { floa

  • 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) { su

  • Android实现可拖拽的GridView效果长按可拖拽删除数据源

    Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换 简单修改,完成自己想要的功能:长按,移到垃圾桶,删除数据. 主要思路是: 1.获取到用户长按的操作 2.获取按下的图片的bitmap以及移动的时候动态刷新镜像 3 action_up的时候判断镜像的位置,进入是否删除逻辑 自定义控件 package com.leafact.GridView; import android.app.Activity; import android.content.Context; i

随机推荐