android 双击图片放大,再双击缩小效果 【安卓进化九】
2011-07-29 11:06
519 查看
今天写了个onDoubleTap事件的处理方法,双击屏幕事件的放大缩小的程序,双击屏幕图片放大,再双击屏幕图片缩小到原来的效果。 请看截图的效果!
原图: 双击屏幕放大后的效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/18/0cc841768a86c93bb55e4b15f6f8846c.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/18/c2274cbce57d97cbe537301808fb5c63.gif)
现把代码贴出来:
一、MainActivty.java类中的代码:
二、ImageShowView.java中的代码:
说明:以上就是我的全部代码,项目中的图片就不上传了,大家可以自己传个图片上去就可以了,有需要完整代码的可以留邮箱,大家有任何问题,可以给我留言,我看到就回复!大家有好的意见可以提出来,共同学习,共同进步!
原图: 双击屏幕放大后的效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/18/0cc841768a86c93bb55e4b15f6f8846c.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/18/c2274cbce57d97cbe537301808fb5c63.gif)
现把代码贴出来:
一、MainActivty.java类中的代码:
package com.cn.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; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mImageShowView = new ImageShowView(this); setContentView(mImageShowView); gestureScanner = new GestureDetector(this); gestureScanner.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener(){ @Override public 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; } @Override public boolean onDoubleTapEvent(MotionEvent e) { // TODO Auto-generated method stub // 双击时产生两次 Log.v("daming", "onDoubleTapEvent"); return false; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { //短快的点击算一次单击 Log.v("daming", "onSingleTapConfirmed"); return false; } }); } @Override public boolean onTouchEvent(MotionEvent me) { return gestureScanner.onTouchEvent(me); } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } }
二、ImageShowView.java中的代码:
package com.cn.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; } @Override protected 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; } @Override public void run() { while(!Thread.currentThread().isInterrupted()){ try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } postInvalidate(); } } private static void drawImage(Canvas canvas, Bitmap bitmap, int x, int y) { // TODO Auto-generated method stub canvas.drawBitmap(bitmap, x, y, null); } }
说明:以上就是我的全部代码,项目中的图片就不上传了,大家可以自己传个图片上去就可以了,有需要完整代码的可以留邮箱,大家有任何问题,可以给我留言,我看到就回复!大家有好的意见可以提出来,共同学习,共同进步!
相关文章推荐
- Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控旋转,圆角矩形,圆形和仿刮刮卡效果
- Android------实现图片双击放大,缩小,左右滑动的多种方式
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- Androin学习笔记五十四: android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- android 图片横向滚动效果 原创【安卓进化五】
- Android自定义ImageView(二)——实现双击放大与缩小图片
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- Android App中实现可以双击放大和缩小图片功能的实例
- Android------实现图片双击放大,缩小,左右滑动的多种方式
- Android图片查看支持双击放大缩小、多点触摸(多机型测试,长期使用很稳定)
- android 双击图片放大缩小
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- Android图片查看支持双击放大缩小、多点触摸
- 安卓开发中的手势操作监听1双击2.滑动关闭Activity 3.放大缩小图片等手势操作,
- 安卓 App双击放大和缩小图片功能
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- Android-图片预览(自定义ImageView 封装(jar): 图片放大缩小,自由移动,双击放大,多点触控)
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果