主页(http://www.175shouji.com):Android应用开发 ScaleGestureDetector(缩放手势
@Override
import android.graphics.Color;
{
public void onCreate(Bundle savedInstanceState)
{
//重新锁一次
import android.graphics.Bitmap;
{
//清屏
@Override
});
android:layout_width=fill_parent
}
/>
// TODO Auto-generated method stub
mSurfaceHolder.unlockCanvasAndPost(mCanvas);
//返回给ScaleGestureDetector来处理
import android.graphics.BitmapFactory;
}
}
android:id=@+id/button
private Bitmap mBitmap = null;
一、概述
mSurfaceHolder.unlockCanvasAndPost(mCanvas);
android:layout_height=wrap_content
android:text=显示图片
android:layout_width=fill_parent
setContentView(R.layout.main);
mSurfaceView = (SurfaceView)this.findViewById(R.id.surfaceview);
二、要求
{
mSurfaceHolder.unlockCanvasAndPost(mCanvas);
public class ScaleGestureListener implements ScaleGestureDetector.OnScaleGestureListener
}
import android.view.View;
// TODO Auto-generated method stub
private ScaleGestureDetector mScaleGestureDetector = null;
// TODO Auto-generated method stub
}
@Override
三、实现
private SurfaceHolder mSurfaceHolder = null;
//重新锁一次
android:layout_height=fill_parent
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.mmm);
{
import android.view.SurfaceHolder;
import android.app.Activity;
import android.os.Bundle;
public boolean onScaleBegin(ScaleGestureDetector detector)
private SurfaceView mSurfaceView = null;
import android.graphics.Canvas;
{
mCanvas.drawColor(Color.BLACK);
android:layout_height=fill_parent
{
mSurfaceHolder.lockCanvas(new Rect(0, 0, 0, 0));
public void onClick(View v)
Matrix mMatrix = new Matrix();
import android.view.MotionEvent;
android:orientation=vertical >
//按钮监听
// TODO Auto-generated method stub
package com.nan.scale;
//锁定整个SurfaceView
/>
mButton = (Button)this.findViewById(R.id.button);
return true;
mMatrix.setScale(scale, scale);
import android.view.ScaleGestureDetector;
}
{
public class MyScaleActivity extends Activity
Canvas mCanvas = mSurfaceHolder.lockCanvas();
import android.view.SurfaceView;
super.onCreate(savedInstanceState);
利用ScaleGestureDetector这个类实现图片缩放。
public boolean onTouchEvent(MotionEvent event)
@Override
float scale = detector.getScaleFactor()/3;
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.unlockCanvasAndPost(mCanvas);
@Override
return false;
//锁定整个SurfaceView
//绘制完成,提交修改
@Override
mScaleGestureDetector = new ScaleGestureDetector(this,new ScaleGestureListener());
//绘制完成,提交修改
修改MyScaleActivity.java文件,主要是实现按钮的监听和定义一个类实现ScaleGestureDetector.OnScaleGestureListener接口:
private Button mButton = null;
public void onScaleEnd(ScaleGestureDetector detector)
android:layout_width=fill_parent
mSurfaceHolder.lockCanvas(new Rect(0, 0, 0, 0));
return mScaleGestureDetector.onTouchEvent(event);
import android.graphics.Rect;
public boolean onScale(ScaleGestureDetector detector)
Canvas mCanvas = mSurfaceHolder.lockCanvas();
mCanvas.drawBitmap(mBitmap, 0f, 0f, null);
本文引用地址:ScaleGestureDetector这个类是专门用来检测两个手指在屏幕上做缩放的手势用的,最简单的应用就是用来缩放图片或者缩放网页。
//一定要返回true才会进入onScale()这个函数
{
import android.widget.Button;
import android.graphics.Matrix;
//画缩放后的图
新建工程MyScale,修改main.xml文件,在里面添加一个Button和一个SurfaceView,如下:
mCanvas.drawBitmap(mBitmap, mMatrix, null);
mButton.setOnClickListener(new View.OnClickListener()
}
android:id=@+id/surfaceview
//画图
//缩放比例
}