Activity:
package com.bocom;import android.app.Activity;import android.content.pm.ActivityInfo;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.graphics.PointF;import android.os.Bundle;import android.util.FloatMath;import android.util.Log;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.view.Window;import android.view.View.OnTouchListener;import android.widget.ImageView;import android.widget.ImageView.ScaleType;public class MainActivityImage extends Activity 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 zoomingPointF start = new PointF();PointF mid = new PointF();float oldDist = 1f;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main_activity_image);setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);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);String v=getIntent().getStringExtra("iv");if("1".equals(v))imgview.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.i1_1));if("2".equals(v))imgview.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.i1_2));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);}@Overridepublic 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()); */ScaleType type=ScaleType.MATRIX;imgview.setScaleType(type);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;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main_activity_image, menu);return true;}}


xml:
<?xml version="1.0" encoding="UTF-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_height="fill_parent"     android:layout_width="fill_parent"     android:id="@+id/linearLayout1"     >        <ImageView         android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:id="@+id/imag1"        android:scaleType="center"        ></ImageView>   </RelativeLayout>


Manifast,colors.xml,styles.xml:
<activity            android:name=".MainActivityImage"            android:theme="@style/Transparent"             android:label="@string/title_activity_main_activity_image" >        </activity><?xml version="1.0" encoding="utf-8"?><resources>    <color name="transparent">#9000</color></resources><style  name="Transparent">   <item name="android:windowBackground">@color/transparent</item>   <item name ="android:windowIsTranslucent">true</item>   <item  name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>   </style> 

更多相关文章

  1. android基础控件(4)GridView实现网格视图
  2. Android中如何实现EditText的自动换行
  3. Android(安卓)循环读取名字相似的图片
  4. android 简单登陆注册的实现
  5. android bitmap溢出问题完美解决方案
  6. Android图片圆角
  7. Android(安卓)实现SHA1加密算法代码
  8. Android(安卓)跳转应用市场的应用详情页
  9. 浅谈Java中Collections.sort对List排序的两种方法

随机推荐

  1. Android初级教程 ——Content Provider
  2. android SQLite数据库用法图文详解(附源码
  3. Android UI系列:TextView显示文本
  4. 使用Acitivity实现简易的音乐播放器
  5. Android _Drag 学习笔记
  6. Android 日志工具(log)的使用方法
  7. 一网打尽__Android 开源代码合集(SwitchBu
  8. android用户界面之Notification教程实例
  9. Android(安卓)学习论坛博客及网站推荐
  10. DSBridge——一套H5代码就能同时与Androi