Androidの画像浮動随意ドラッグの効果実現

11330 ワード

----------------------転載は出典を明記してください.http://blog.csdn.net/android_cll
一:一般的にはまず効果図を上にして、これはこのインタフェースで勝手にドラッグすることができます.
Android之图片浮动随意拖拽的效果实现_第1张图片
Android之图片浮动随意拖拽的效果实现_第2张图片
二:実現ステップ、
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レイアウトの参照、
    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