2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > android 双击图片放大 再双击缩小效果 【安卓进化九】

android 双击图片放大 再双击缩小效果 【安卓进化九】

时间:2019-07-06 01:06:50

相关推荐

android 双击图片放大 再双击缩小效果 【安卓进化九】

今天写了个onDoubleTap事件的处理方法,双击屏幕事件的放大缩小的程序,双击屏幕图片放大,再双击屏幕图片缩小到原来的效果。请看截图的效果!

原图: 双击屏幕放大后的效果:

现把代码贴出来:

一、MainActivty.java类中的代码:

package .android;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.GestureDetector;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.GestureDetector.OnGestureListener;public class mainActivity extends Activity implements OnGestureListener{private ImageShowView mImageShowView = null;private GestureDetector gestureScanner;private double Scale = 1.0;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mImageShowView = new ImageShowView(this);setContentView(mImageShowView);gestureScanner = new GestureDetector(this); gestureScanner.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener(){@Overridepublic boolean onDoubleTap(MotionEvent e) {// TODO Auto-generated method stub// 双击时产生一次if(Scale == 1.0){Scale = Scale + 0.5;mImageShowView.setScale(Scale);}else if(Scale == 1.5){Scale = Scale - 0.5;mImageShowView.setScale(Scale);}Log.v("daming", "onDoubleTap");return true;}@Overridepublic boolean onDoubleTapEvent(MotionEvent e) {// TODO Auto-generated method stub// 双击时产生两次Log.v("daming", "onDoubleTapEvent");return false;}@Overridepublic boolean onSingleTapConfirmed(MotionEvent e) {//短快的点击算一次单击Log.v("daming", "onSingleTapConfirmed");return false; }});}@Override public boolean onTouchEvent(MotionEvent me) { return gestureScanner.onTouchEvent(me); }@Overridepublic boolean onDown(MotionEvent e) {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {// TODO Auto-generated method stubreturn false;}@Overridepublic void onLongPress(MotionEvent e) {// TODO Auto-generated method stub}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) {// TODO Auto-generated method stubreturn false;}@Overridepublic void onShowPress(MotionEvent e) {// TODO Auto-generated method stub}@Overridepublic boolean onSingleTapUp(MotionEvent e) {// TODO Auto-generated method stubreturn false;} }

二、ImageShowView.java中的代码:

package .android;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.drawable.BitmapDrawable;import android.view.KeyEvent;import android.view.View;public class ImageShowView extends View implements Runnable{Bitmap mBitmap = null;int mBitmapWidth = 0;//定义图片的宽int mBitmapHeight = 0;//定义图片的高private double Scale = 1.0;Matrix mMatrix = new Matrix();public ImageShowView(Context context) {super(context);mBitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.image1)).getBitmap();mBitmapWidth = mBitmap.getWidth();mBitmapHeight = mBitmap.getHeight();//开启线程new Thread(this).start();}public void setScale(double scale){this.Scale = scale;}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);mMatrix.reset();mMatrix.postScale((float)Scale, (float)Scale);//设置缩放Bitmap mBitmap2 = Bitmap.createBitmap(mBitmap,0,0,mBitmapWidth,mBitmapHeight,mMatrix,true);//绘制旋转之后的图像ImageShowView.drawImage(canvas,mBitmap2,(320-mBitmapWidth)/2,10);mBitmap2 = null;}@Overridepublic void run() {while(!Thread.currentThread().isInterrupted()){try {Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}postInvalidate();} }private static void drawImage(Canvas canvas, Bitmap bitmap, int x, int y) {// TODO Auto-generated method stubcanvas.drawBitmap(bitmap, x, y, null);}}

说明:以上就是我的全部代码,项目中的图片就不上传了,大家可以自己传个图片上去就可以了,有需要完整代码的可以留邮箱,大家有任何问题,可以给我留言,我看到就回复!大家有好的意见可以提出来,共同学习,共同进步!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。