android 双击图片放大缩小

package com.szxys.doubleclike;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.ImageView;

public class DoubleClickActivity extends Activity {
	/** Called when the activity is first created. */
	private ImageView image;
	private Bitmap bitmap;
	private boolean isbig = false;
	private int count = 2;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		image = (ImageView) findViewById(R.id.image);
		bitmap = BitmapFactory
				.decodeResource(getResources(), R.drawable.girl_1);
		image.setBackgroundResource(R.drawable.girl_1);
		image.setOnClickListener(new clike());

	}

	private long sTime = 0;
	private long eTime = 0;
	private Drawable drawable;

	interface TimeListener{
		public long getCurrentTime();
	}
	class clike implements View.OnClickListener,  TimeListener{

		@Override
		public long getCurrentTime() {
			// TODO Auto-generated method stub
			return System.currentTimeMillis();
		}

		@Override
		public void onClick(View v) {
				// TODO Auto-generated method stub
				if(sTime!=0&&(getCurrentTime()-sTime>500)){
					sTime = 0;
					count=2;
				}
				if (!isbig) {
					--count;
					if (count > 0) {
						sTime = getCurrentTime();
						System.out.println(sTime + "--s--");
					}
					if (count == 0) {
						eTime = getCurrentTime();
						System.out.println(sTime + "--e--");
						if ((eTime - sTime) <= 500) {
							drawable = resizeImage(bitmap,
									bitmap.getWidth() * 4, bitmap.getHeight() * 4);
							image.setBackgroundDrawable(drawable);
							ScaleAnimation animation = new ScaleAnimation(0.25f, 1.0f, 0.25f, 1.0f,
									Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0f);
							animation.setDuration(500);
							animation.setAnimationListener(new Animation.AnimationListener() {
								@Override
								public void onAnimationStart(Animation animation) {
									// TODO Auto-generated method stub
								}

								@Override
								public void onAnimationRepeat(Animation animation) {
									// TODO Auto-generated method stub
								}

								@Override
								public void onAnimationEnd(Animation animation) {
									// TODO Auto-generated method stub
									isbig = true;
									sTime = 0;
									eTime = 0;
									count = 2;
								}
							});
							image.setAnimation(animation);
							System.out.println("----------haha--------------");
						}
					}
				}else{
					--count;
					if (count > 0) {
						sTime = getCurrentTime();
						System.out.println(sTime + "--s--");
					}
					if (count == 0) {
						eTime = getCurrentTime();
						System.out.println(sTime + "--e--");
						Drawable Tempdrawable = drawable;
						final Bitmap bitmap = ((BitmapDrawable)Tempdrawable).getBitmap();
						if ((eTime - sTime) <= 500) {
							drawable = resizeImage(bitmap,
									bitmap.getWidth()/4, bitmap.getHeight()/4);
							ScaleAnimation animation = new ScaleAnimation(1.0f, 0.25f, 1.0f, 0.25f,
									Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0f);
							animation.setDuration(500);
							animation.setAnimationListener(new Animation.AnimationListener() {
								@Override
								public void onAnimationStart(Animation animation) {
								}
								@Override
								public void onAnimationRepeat(Animation animation) {
								}
								@Override
								public void onAnimationEnd(Animation animation) {
									image.clearAnimation();
									image.setBackgroundDrawable(drawable);
									isbig = false;
									sTime = 0;
									eTime = 0;
									count = 2;
								}
							});
							image.setBackgroundDrawable(Tempdrawable);
							image.setAnimation(animation);
							System.out.println("----------haha--------------");
						}
					}
				}

			}

		}

	// 压缩图片到指定大小
	public static Drawable resizeImage(Bitmap bitmap, int w, int h) {
		Bitmap BitmapOrg = bitmap;
		int width = BitmapOrg.getWidth();
		int height = BitmapOrg.getHeight();
		int newWidth = w;
		int newHeight = h;
		float scaleWidth = ((float) newWidth) / width;
		float scaleHeight = ((float) newHeight) / height;
		Matrix matrix = new Matrix();
		matrix.postScale(scaleWidth, scaleHeight);
		Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0, width,
				height, matrix, true);
		return new BitmapDrawable(resizedBitmap);

	}
}
时间: 2024-09-16 00:09:24

android 双击图片放大缩小的相关文章

Android多点触控实现对图片放大缩小平移,惯性滑动等功能_Android

文章将在原有基础之上做了一些扩展功能: 1.图片的惯性滑动 2.图片缩放小于正常比例时,松手会自动回弹成正常比例 3.图片缩放大于最大比例时,松手会自动回弹成最大比例 实现图片的缩放,平移,双击缩放等基本功能的代码如下,每一行代码我都做了详细的注释 public class ZoomImageView extends ImageView implements ScaleGestureDetector.OnScaleGestureListener, View.OnTouchListener , V

js实现双击图片放大单击缩小的方法

 这篇文章主要介绍了js实现双击图片放大单击缩小的方法,涉及js操作图片及onclick与ondblclick事件的使用技巧,需要的朋友可以参考下     本文实例讲述了js实现双击图片放大单击缩小的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> &l

js实现双击图片放大单击缩小的方法_javascript技巧

本文实例讲述了js实现双击图片放大单击缩小的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>双击图片放大,单击缩小</title> </head> <body> <SCRIPT

Android图片放大缩小动画,竟如此简单

有这样一个需求,需要点击图片放大缩小动画,效果: 我们借助Android自带动画Animation ,很容易实现 初始化对象 Animation animation;  private ImageView iv_good;  animation= AnimationUtils.loadAnimation(this, R.anim.anim_small);  按钮点击事件 iv_good.setOnClickListener(new View.OnClickListener() {        

Android中imageView图片放大缩小及旋转功能示例代码

一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCenter" android:scaleType="fitCenter" 第二步:获取屏幕的宽度 DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); dm.widthPixels 第三

缩放-android一个图片放大功能的实现,求思路

问题描述 android一个图片放大功能的实现,求思路 就像手机QQ那样,点一张别人发的图片进入一个Activity,可以随意缩小放大那张图片的功能是怎么实现的??? 解决方案 http://www.cnblogs.com/linjzong/p/4211661.html 解决方案二: http://blog.csdn.net/u011596810/article/details/47173785 里面的代码亲测有用,而且是个独立的封装类,又有蛮多的注释,楼主可以尝试看看 解决方案三: 可以看看我

viewpager-在ViewPager中的图片放大缩小事件与viewPager的滑动事件冲突了

问题描述 在ViewPager中的图片放大缩小事件与viewPager的滑动事件冲突了 我现在的状况是我在代码中写了一个图片的放大缩小,但是现在的情况是,在ViewPager中的图片要放大都放大,要是缩小都缩小,请问这个事情怎么解决呢?求助大神呢

js实现图片放大缩小功能后进行复杂排序的方法_jquery

这是一个基于jquery的图片效果,它的作用是:当图片点击变大(变小)时,其它图片按照一定的规则进行排序运动. 首先来看下最终的效果图: 有人可能看到这个会觉得,这有什么难的,这么简单的事,楼主是不是太小提大作了?当你真正去尝试时,你才知道到底有什么难点.  首先,我们来讲下需求: 1.图片分为大小和小图,大图占四个小图的位置, 2.点击图片放大缩小, 重新排列顺序, 3. 当点击偶数列(2,4)时,它前面的那项将向提出来向后面排列 4.第一个项不能动,点第二个是将占第三四的位置,从后面取第一个

JS简单的图片放大缩小的两种方法_javascript技巧

以左上角为定点,放大缩小,该点位置不变. 方法一: Html代码 复制代码 代码如下:    <script type="text/javascript">         //兼容IE和火狐   缩小放大.缩放         function ImageSuofang(args) {             var oImg = document.getElementById("oImg");             if (args) {