//简单实现可拖动的ImageViewimport android.annotation.TargetApi;import android.content.Context;import android.os.Build;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.widget.ImageView;/** * Created by  on 16-4-15. */public class DragImageView extends ImageView{    private final static String TAG = "DragImageView";    private int startX;    private int startY;    private int startL;//初始时左上X,相对于父容器    private int startT;//初始时左上Y    private int startR;//初始时右下X    private int startB;//初始时右下X    private int stopX;    private int stopY;    public DragImageView(Context context) {        super(context);    }    public DragImageView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @TargetApi(Build.VERSION_CODES.LOLLIPOP)    public DragImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {        super(context, attrs, defStyleAttr, defStyleRes);    }    public DragImageView(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        int action = event.getAction();        switch (action){            case MotionEvent.ACTION_DOWN:                startX = (int) event.getRawX();//相对于屏幕的x坐标,getX()是相对于组件的坐标                startY = (int) event.getRawY();                startL = getLeft();                startT = getTop();                startR = getRight();                startB = getBottom();                Log.d(TAG,"x:"+startX+",rawX,"+event.getRawX()+",left:"+getLeft());                break;            case MotionEvent.ACTION_MOVE:            case MotionEvent.ACTION_UP:                stopX = (int) event.getRawX();                stopY = (int) event.getRawY();                int deltaX = stopX - startX;//拖动偏移量                int deltaY = stopY - startY;                this.moveToPosition(startL+deltaX,startT+deltaY,startR+deltaX,startB+deltaY);                stopX = (int) event.getRawX();                stopY = (int) event.getRawY();                invalidate();                break;        }        return true;    }    private void moveToPosition(int leftX,int leftY,int rightX,int bottom){        this.layout(leftX,leftY,rightX,bottom);    }}

更多相关文章

  1. Android——Gallery 图片拖动效果
  2. 进度条与拖动条的使用学习
  3. 《Android面试宝典》学习笔记(第二章:布局)
  4. 《Android面试宝典》学习笔记(第二章:布局)
  5. Android学习——android:cacheColorHint=“#00000000”
  6. Android(安卓)自定义View之坐标系(一)
  7. Android的View类介绍-android的学习之旅(十三)
  8. Android(安卓)UI基础——SeekBar&RatingBar控件
  9. Android界面布局——视图/容器易混淆点总结

随机推荐

  1. Android高手进阶教程(二十七)之---基于Vi
  2. android 调用照相功能
  3. Browser设置为桌面版
  4. 2010.12.08——— android progressDialo
  5. android 开发收银系统,弹出键盘固定界面U
  6. wifi
  7. [Android] Code Style Guidelines for Co
  8. Android实现DES和3DES算法
  9. Android WebView访问SSL证书网页(onReceiv
  10. Android 动画ObjectAnimator中height和tr