viewpager里的安卓控件移动和单击事件解决

本文介绍了如何在Android的ViewPager中处理控件的移动和单击事件。通过实现OnTouchListener接口,记录ACTION_DOWN和ACTION_MOVE事件,动态调整控件的位置并重绘。同时,注意到ViewPager自身滑动时不应改变控件位置,因此需要保存初始位置并在合适时机恢复。还提到了SharedPreferences的使用模式,并引用了相关博客资源进行进一步学习。
摘要由CSDN通过智能技术生成

 一、实例化控件,设置监听

        maction = (ImageView) findViewById(R.id.action_icon);
        //移动小球的类
        toucherActionIcon = new ToucherActionIcon();
        maction.setOnTouchListener(toucherActionIcon);

二、实现触碰接口然后在里面实现移动+重绘和单击事件

实现了OnTouchListener接口,覆写了onTouch方法,每次回调这个方法通过x和y变量记录当前的坐标。

ACTION_DOWN是在按下的时候调用(没抬起来只调用一次),通过xDelta和yDelta来记录第一次按下的点相对于控件左上角的位置,也就是相对距离。

ACTION_MOVE移动的时候不断调用,通过xDistance和yDistance来记录移动的相对距离作为leftMargin和topMargin再动态设置给控件。

最后,调用invalidate方法更新控件位置。

 /**
     * class name : ToucherActionIcon
     * Specific description :actionbutton的移动和单击事件解决
     */
    public class ToucherActionIcon implements View.OnTouchListener{
        @Override
        public boolean onTouch(View view, MotionEvent event) {
            final int x = (int) event.getRawX();
            final int y = (int) event.getRawY();
            LogUtils.d(TAG, "onTouch: x= " + x + "y=" + y);
            switch (event.getAction() & MotionEvent.ACTION_MASK) {
                case MotionEvent.ACTION_DOWN:
                    RelativeLayout.L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值