Android之关于手势操作图片的缩放与移动
2014-03-25 13:07
375 查看
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:weightSum="1" > <ImageView android:id="@+id/imag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:scaleType="matrix" android:src="@drawable/a" > </ImageView> <ImageView android:id="@+id/imag1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="matrix" > </ImageView> </LinearLayout>
实现代码: package hfut.gmm; import javax.swing.text.View; import javax.swing.text.html.ImageView; public class Img_control extends Activity implements OnTouchListener {//implements OnTouchListener { private ImageView imgview; private ImageView img; private Matrix matrix=new Matrix(); private Matrix savedMatrix=new Matrix(); static final int NONE = 0; static final int DRAG = 1; static final int ZOOM = 2; int mode = NONE; // Remember some things for zooming PointF start = new PointF(); PointF mid = new PointF(); float oldDist = 1f; //private GestureDetector gesture; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.img_control); imgview=(ImageView)this.findViewById(R.id.imag1); imgview.setAnimation(AnimationUtils.loadAnimation(this, R.anim.newanim)); img=(ImageView)this.findViewById(R.id.imag); Matrix mt=img.getImageMatrix(); //mt.postRotate(30); mt.postScale(0.5f,0.5f);mt.postScale(1.5f,1.5f); mt.postRotate(30, 130, 100); mt.postTranslate(100, 10); img.setImageMatrix(mt); //imgview.setLongClickable(true); imgview.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.a)); imgview.setOnTouchListener(this); imgview.setLongClickable(true); } private float spacing(MotionEvent event) { float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); return FloatMath.sqrt(x * x + y * y); } private void midPoint(PointF point, MotionEvent event) { float x = event.getX(0) + event.getX(1); float y = event.getY(0) + event.getY(1); point.set(x / 2, y / 2); } @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub /* Log.d("Infor", "类别:"+event.getAction()); Log.d("Infor", "mask:"+event.getActionMasked()); Log.d("Infor", "index:"+event.getActionIndex()); Log.d("Infor", "points:"+event.getPointerCount());*/ Log.d("Infor", "size:"+event.getSize()); if(event.getActionMasked()==MotionEvent.ACTION_POINTER_UP) Log.d("Infor", "多点操作"); switch(event.getActionMasked()){ case MotionEvent.ACTION_DOWN: matrix.set(imgview.getImageMatrix()); savedMatrix.set(matrix); start.set(event.getX(),event.getY()); Log.d("Infor", "触摸了..."); mode=DRAG; break; case MotionEvent.ACTION_POINTER_DOWN: //多点触控 oldDist=this.spacing(event); if(oldDist>10f){ Log.d("Infor", "oldDist"+oldDist); savedMatrix.set(matrix); midPoint(mid,event); mode=ZOOM; } break; case MotionEvent.ACTION_POINTER_UP: mode=NONE; break; case MotionEvent.ACTION_MOVE: if(mode==DRAG){ //此实现图片的拖动功能... matrix.set(savedMatrix); matrix.postTranslate(event.getX()-start.x, event.getY()-start.y); } else if(mode==ZOOM){// 此实现图片的缩放功能... float newDist=spacing(event); if(newDist>10){ matrix.set(savedMatrix); float scale=newDist/oldDist; matrix.postScale(scale, scale, mid.x, mid.y); } } break; } imgview.setImageMatrix(matrix); return false; } }
相关文章推荐
- Android之关于手势操作图片的缩放与移动
- Android开发:对图片的手势操作——旋转、缩放、移动
- 一些有关Android图片的操作,判断方向,旋转,根据uri获取绝对路径,缩放与移动
- Android手势控制实现缩放、移动图片
- android 图片操作(缩放移动) 实例代码
- android中手势操作图片的平移、缩放、旋转
- android实现手势缩放、移动图片
- android中手势操作图片的平移、缩放、旋转
- 【Android】自定义ImageView实现图片的平移、缩放、旋转(手势操作)
- Android手势缩放图片以及图片黏贴在手指随手势移动
- Android手势缩放图片以及图片黏贴在手指随手势移动
- android中手势操作图片的平移、缩放、旋转
- Android实现 通过手势随意缩放、移动ImageView图片
- 自定义控件: android中手势操作图片的平移、缩放、旋转 并保存
- Android matrix 控制图片的旋转、缩放、移动
- 图片操作(缩放移动)
- 初学Android,手势缩放图片(四十八)
- Android游戏开发:实现手势操作切换图片的实例
- Android手势:单指拖动、双指缩放图片
- Android图片查看器(图片可移动、缩放、旋转)