可拖动按钮

在这里插入图片描述
.xml

<Button
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:id="@+id/button_id"
        android:text="我是按钮"/>

.Java

public class MainActivity extends AppCompatActivity {
    private LinearLayout.LayoutParams layoutParams;
    private Button button;
    private int height;
    private int width;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button_id);
        width = button.getWidth();
        height = button.getHeight();
        //获取布局参数
        layoutParams = (LinearLayout.LayoutParams) button.getLayoutParams();
		//按钮调用触碰监听
        button.setOnTouchListener(new View.OnTouchListener() {
            private int y;
            private int x;
            private int ry;
            private int rx;
		//调用触碰方法
            @Override
            public boolean onTouch(View v, MotionEvent event) {
            //手指按下获取手指相对于控件的坐标
                if (MotionEvent.ACTION_DOWN == event.getAction()) {
                    x = (int) event.getX();
                    y = (int) event.getY();}
			 //手指移动获取手指相对于屏幕的坐标
                if (MotionEvent.ACTION_MOVE == event.getAction()) {
                    rx = (int) event.getRawX();
                    //高度减去状态栏的高度(状态栏高度不手机不一样 值不一样)
                    ry = (int) event.getRawY()-126;
                    //移动时两个坐标相减获取差值,重新赋值给控件的margin
                    layoutParams.setMargins(rx - x, ry - y, rx - x + width, ry - y +height);
                    button.setLayoutParams(layoutParams);}
                return true;}
        });
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值