设为首页 加入收藏

TOP

Android中实现图片的拖拽显示
2014-11-24 14:39:10 来源: 作者: 【 】 浏览:7
Tags:Android 实现 图片 显示

首先介绍处理手机的屏幕事件监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。


OnTouchListener


public boolean onTouch(View v, MotionEvent event)


Matrix


Matrix的操作,总共分为translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种,每一种变换在Android的API里都提供了set, post和pre三种操作方式,除了translate,其他三种操作都可以指定中心点。set是直接设置Matrix的值,每次set一次,整个Matrix的数组都会变掉。post是后乘,当前的矩阵乘以参数给出的矩阵。可以连续多次使用post,来完成所需的整个变换。


实现图片的移动:


Activity中的文件代码:


public class MyDragTestActivity extends Activity {


ImageView imageView = null;


@Override


public void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);


setContentView(R.layout.main);



init();


}


private void init() {



imageView = (ImageView) this.findViewById(R.id.imageView);


imageView.setOnTouchListener(new ImageViewOnTouchListener());


}


private final class ImageViewOnTouchListener implements OnTouchListener{


PointF startPoint = new PointF();


Matrix m = new Matrix();


public boolean onTouch(View v, MotionEvent event) {


switch(event.getAction()&MotionEvent.ACTION_MASK){


case MotionEvent.ACTION_DOWN://指点杆按下


//当前位子保存为新的起始点


startPoint.set(event.getX(),event.getY());


break;


case MotionEvent.ACTION_MOVE://指点杆保持按下,并进行位移


float dx = event.getX()- startPoint.x;


float dy = event.getY()-startPoint.y;


m.postTranslate(dx, dy);


//将当前坐标保存为新起点


startPoint.set(event.getX(),event.getY());


break;


case MotionEvent.ACTION_UP://指点杆离开屏幕


break;


case MotionEvent.ACTION_POINTER_UP://有手指离开屏幕,但还有手指压住屏幕,就会触发事件


break;


case MotionEvent.ACTION_POINTER_DOWN://如果已经有手机压在屏幕上,又有手指压在屏幕上了,多点触摸的意思


break;


}


imageView.setImageMatrix(m);


return true;


}


}


}


布局文件:


"http://schemas.android.com/apk/res/android"


android:layout_width="fill_parent"


android:layout_height="fill_parent"


android:orientation="vertical" >




android:id="@+id/imageView"


android:layout_width="fill_parent"


android:layout_height="fill_parent"


android:src="@drawable/a"


android:scaleType="matrix" />




效果:



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android开发教程:代码实现StateL.. 下一篇Android USB大容量存储时SD卡状态..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: