您的位置:首页 > 移动开发 > Android开发

Android 移动缩放的ImageView

2013-10-09 13:00 197 查看
今天介绍一下Android中怎么实现ImageView的缩放和移动,自定义TouchImageView。
public class TouchImageView extends
ImageView {
Matrix matrix;
// We can be in one of these 3
states

    static final
int NONE = 0;

    static final
int DRAG = 1;

    static final
int ZOOM = 2;

    int mode =
NONE;
// Remember some things for
zooming

    PointF last
= new PointF();

    PointF start
= new PointF();

    float
minScale = 1f;

    float
maxScale = 3f;

    float[]
m;

    int
viewWidth, viewHeight;

    static final
int CLICK = 3;

    float
saveScale = 1f;

    protected
float origWidth, origHeight;

    int
oldMeasuredWidth, oldMeasuredHeight;

   
ScaleGestureDetector mScaleDetector;
Context context;
public TouchImageView(Context context)
{

       
super(context);

       
sharedConstructing(context);

    }
public TouchImageView(Context context,
AttributeSet attrs) {

       
super(context, attrs);

       
sharedConstructing(context);

    }

   

    private void
sharedConstructing(Context context) {

       
super.setClickable(true);

       
this.context = context;

       
mScaleDetector = new ScaleGestureDetector(context, new
ScaleListener());

       
matrix = new Matrix();

       
m = new float[9];

       
setImageMatrix(matrix);

       
setScaleType(ScaleType.MATRIX);
setOnTouchListener(new
OnTouchListener() {
@Override

           
public boolean onTouch(View v, MotionEvent event) {

               
mScaleDetector.onTouchEvent(event);

               
PointF curr = new PointF(event.getX(), event.getY());
switch (event.getAction()) {

                   
case MotionEvent.ACTION_DOWN:

                   
 last.set(curr);

                       
start.set(last);

                       
mode = DRAG;

                       
break;

                       

                   
case MotionEvent.ACTION_MOVE:

                       
if (mode == DRAG) {

                           
float deltaX = curr.x - last.x;

                           
float deltaY = curr.y - last.y;

                          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: