Android之图片浮动随意拖拽的效果实现

一:效果图,这个是可以在这个界面随意拖动的、

 

二:实现步骤

1.先自定义一个浮动工具类、

public class MoveImage extends ImageView {

   /**
    *
    * 浮动工具类
    *
    */
   private int lastX = 0;
   private int lastY = 0;

   private int dx;
   private int dy;
   private float movex = 0;
   private float movey = 0;

   private int screenWidth;
   private int screenHeight;

   public MoveImage(Context context, AttributeSet attrs) {
      super(context, attrs);
      screenWidth = ScreenUtils.getWidth(context);
      screenHeight = ScreenUtils.getHeight(context);
   }

   @Override
   public boolean onTouchEvent(MotionEvent event) {
      switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN:
         lastX = (int) event.getRawX();
         lastY = (int) event.getRawY();
         movex = lastX;
         movey = lastY;
         break;
      case MotionEvent.ACTION_MOVE:
         dx = (int) event.getRawX() - lastX;
         dy = (int) event.getRawY() - lastY;

         int left = getLeft() + dx;
         int top = getTop() + dy;
         int right = getRight() + dx;
         int bottom = getBottom() + dy;
         if (left < 0) {
            left = 0;
            right = left + getWidth();
         }
         if (right > screenWidth) {
            right = screenWidth;
            left = right - getWidth();
         }
         if (top < 0) {
            top = 0;
            bottom = top + getHeight();
         }
         if (bottom > screenHeight) {
            bottom = screenHeight;
            top = bottom - getHeight();
         }
         layout(left, top, right, bottom);
         lastX = (int) event.getRawX();
         lastY = (int) event.getRawY();
         break;
      case MotionEvent.ACTION_UP:
         //避免滑出触发点击事件
         if ((int) (event.getRawX() - movex) != 0
               || (int) (event.getRawY() - movey) != 0) {
            return true;
         }
         break;
      default:
         break;
      }
      return super.onTouchEvent(event);
   }

}

2.xml布局的引用、
 

<com.zjtd.bzcommunity.text.MoveImage
    android:id="@+id/iv_phone_bar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="70dp"
    android:src="@drawable/my_qiandao_icon" />

 

3.activity的实现、

private MoveImage iv_phone_bar;//签到图片
iv_phone_bar = (MoveImage) view.findViewById(R.id.iv_phone_bar);
iv_phone_bar.setOnClickListener(this);
// 签到
case R.id.iv_phone_bar:
    startActivity(new Intent(getActivity(), SignAcitvity.class));//点击跳转页面
    break;

 

 

简单除暴超炫,你值得拥有。。。。看了帮我顶一下哦!

-------------------最后附上源码:http://download.csdn.net/download/android_cll/9803439

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶已初秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值