<ImageView                android:id="@+id/imageview"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                                android:src="@drawable/zixun"                android:scaleType="matrix"                />关键点:缩放的内容不能是图片的背景,一定要是图片的内容
public class HelpActivity extends Activity{    private static final int NONE = 0;    private static final int DRAG = 1;    private static final int ZOOM = 2;    private int mode = NONE;    private float oldDist;    private Matrix matrix = new Matrix();    private Matrix savedMatrix = new Matrix();    private PointF start = new PointF();    private PointF mid = new PointF();    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.help);        ImageView view = (ImageView) findViewById(R.id.imageview);//        view.setImageResource(R.drawable.icon);        view.setOnTouchListener(mOnTouchListener);    }    OnTouchListener mOnTouchListener = new OnTouchListener()    {        public boolean onTouch(View v, MotionEvent event)        {            Trace.Log("------------------"+event.toString());            ImageView view = (ImageView) v;            switch (event.getAction() & MotionEvent.ACTION_MASK)            {            case MotionEvent.ACTION_DOWN:                savedMatrix.set(matrix);                start.set(event.getX(), event.getY());                mode = DRAG;                break;            case MotionEvent.ACTION_UP:            case MotionEvent.ACTION_POINTER_UP:                mode = NONE;                break;            // 多点触控            case MotionEvent.ACTION_POINTER_DOWN:                oldDist = spacing(event);                if (oldDist > 10f)                {                    savedMatrix.set(matrix);                    midPoint(mid, event);                    mode = ZOOM;                }                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 > 10f)                    {                        matrix.set(savedMatrix);                        float scale = newDist / oldDist;                        matrix.postScale(scale, scale, mid.x, mid.y);                        Trace.Log("------------------"+newDist);                    }                }                break;            }            view.setImageMatrix(matrix);//            view.invalidate();            return 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);    }    public void onClickBack(View view)    {        backToCardSelect();    }    }

ImageVIew 需要在最上面一层,否则可能不会生效

更多相关文章

  1. Android有用代码片断(六)
  2. android设置背景图片透明
  3. Android上传下载文件(图片)
  4. Android(安卓)Universal Image Loader 源码分析
  5. 点击LinearLayout使用selector改变TextView字体颜色
  6. android手机中图片的拖拉及浏览功能
  7. mono for android 读取网络远程图片
  8. android 将图片转换成黑白图片
  9. AndroidTextView的跑马灯效果,解决复杂布局不能获取焦点的问题

随机推荐

  1. 面向UDP的Android——PC双向通信(三):在Andr
  2. [转] Android电源管理
  3. android:configChanges
  4. Android是什么 之三-------手机之硬件形
  5. android kernel 初始化 1
  6. Android 6.0棉花糖新特性,
  7. android TextView 走马灯效果
  8. Android api,Android SDK
  9. android后台进程隐藏手段
  10. ch026 Android Socket