`
vlinux
  • 浏览: 53415 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

Android通过手势实现的缩放处理

阅读更多
原文《我认为HTC HERO-ROM支持所谓的多点触摸是个谎言》我觉得太具有攻击性,和我平时的风格不大相符,故撤换之。


看见网上很多人评论HTC的HERO是支持多点触摸的,我也心痒痒了很久。要知道,如果能找到绕过Google实现多点触摸的真理,那将会引起Android软件设计上的一场革命...

网络上传言HTC的HERO-ROM支持多点触摸的论证大多源于浏览网页和图片时,能像IPhone一样通过手势来控制页面的大小。但是我认为,就算不通过尚未公布的多点触摸(很怀疑HTC目前的电容屏是否只支持两点触摸而已,并不是多点。之前有看过一篇文章介绍电容屏的区别,如果我以后能找到一定贴上来,当然这是题外话了),我们一样能够利用现有的API实现HERO浏览图片和网页的缩放功能。

主要原理是onTouchEvent事件中的参数MotionEvent,它有一个getSize()方法。在一个点的时候,该方法永远返回0,而在两个触电的时候,该方法则根据两点相对位置变化而返回不同的值。我们只需计算出两点之间的距离变化,距离的大小表明我们希望目标变化的趋势。而getX()和getY()方法则永远座落在两触点之间,这样趋势和目标我们都有了。剩下的就是对目标根据趋势进行放大或缩小即可。

下边是根据我前边描述的思路编写的代码:让一个蓝色的圆根据手势放大或者缩小。流感中,代码就不指望太清晰了。

/**
 * ...
 * 
 * @author vlinux
 * 
 */
public class MultiTouchTestActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// setContentView(R.layout.main);
		View view = new MultiTouchView(this);
		setContentView(view);
	}

	class MultiTouchView extends View {

		private float x1;
		private float y1;
		private float x2;
		private float y2;

		public MultiTouchView(Context context) {
			super(context);
			// TODO Auto-generated constructor stub
		}

		@Override
		public boolean onTouchEvent(MotionEvent event) {
			// TODO Auto-generated method stub

			float size = event.getSize();

			int szi = (int) size;
			int dxi = szi >> 12;
			int dyit = ((1 << 12) - 1);
			int dyi = szi & dyit;

			DisplayMetrics metrics = getResources().getDisplayMetrics();
			float dx = metrics.widthPixels * dxi / (float) dyit;
			float dy = metrics.heightPixels * dyi / (float) dyit;

			x1 = event.getX();
			y1 = event.getY();

			x2 = x1 + dx;
			y2 = y1 + dy;

			invalidate();

			return true;
		}

		@Override
		protected void onDraw(Canvas canvas) {
			// TODO Auto-generated method stub
			super.onDraw(canvas);

			float r = (float) Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2)
					* (y1 - y2)) / 2;
			r = 50 >= r ? 50 : r;

			Paint paint = new Paint();
			paint.setColor(Color.BLUE);
			canvas.drawCircle(x1, y1, r, paint);

		}

	}

}


以上是我对HERO-ROM如何实现类似IPHONE一样缩放图片、网页的方法。时间仓促,若有不对,欢迎指出。





  • 大小: 376 KB
  • 大小: 346.3 KB
分享到:
评论
9 楼 foreverpains 2011-07-13  
getSize()是返回手触面积大小相关的一个参数,而且一个点的时候也不为0,楼主的代码也没实现缩放啊....着什么情况....标题党?
8 楼 tapestry1122 2010-05-13  

int dyi = szi & dyit;  

改成
int dyi = szi & 0xfff;

不好么
7 楼 BarryWei 2010-05-13  
哎,没办法的事情,也苦了我们这些android的爱好者。
这方法实现固然是好,但是很鸡肋……
6 楼 proper 2009-11-18  
这个很强大,至少支持两点触摸了,呵呵 
5 楼 christensen 2009-11-18  
getSize终于明白啥意思了,3q楼主
4 楼 right 2009-11-18  
注意休息  保重身体

好了吧
3 楼 wayfarer 2009-11-18  
“有一个getSize()方法。在一个点的时候,该方法永远返回0,而在两个触电的时候,该方法则根据两点相对位置变化而返回不同的值”

一句话惊醒梦中人。先不说hero的电容屏是否真正支持多触摸点。至少这个对我很有帮助。

顶牛人。
2 楼 liangx8rx 2009-11-17  
這個東西要怎麼用?是打成jar包放在手機里的嗎?
1 楼 suerey 2009-11-14  
这个功能原本不是有了吗?
弄个三点的出来。。

相关推荐

    Android通过手势实现的缩放处理_安卓源码.zip

    "Android通过手势实现的缩放处理"这个项目着重展示了如何利用手势识别技术来实现Android应用中的图片或视图的缩放功能。这通常是通过Android的GestureDetector和ScaleGestureDetector类来完成的。下面将详细讲解这一...

    Android通过手势实现的缩放处理-.zip

    本教程将探讨如何在Android中通过手势(Gesture)实现图片或其他元素的缩放处理。我们将主要关注以下知识点: 1. **MotionEvent**:Android中的手势处理主要依赖于`MotionEvent`类,它封装了触摸屏幕时的事件信息,...

    Android代码-通过手势实现的缩放处理.zip

    "通过手势实现的缩放处理"这个项目主要关注的是Android中的多点触控手势,特别是双指捏合手势,用于实现图像或视图的缩放功能。在Android应用中,这种功能常见于图片查看器、地图应用等。 一、Android手势识别基础 ...

    Android实现图片手势缩放、移动、双击放大缩小

    Android实现图片手势缩放、移动、双击放大缩小。

    Android通过手势实现的缩放处理 .zip

    本资源包“Android通过手势实现的缩放处理 .zip”提供了关于如何在Android应用中实现手势缩放功能的详细示例。下面将深入讨论相关知识点。 1. **Android手势识别**: Android SDK提供了GestureDetector类,它允许...

    Android通过手势实现的缩放处理.zip源码资源下载

    综上所述,`Android通过手势实现的缩放处理.zip`源码资源旨在帮助开发者理解并实现Android手势缩放功能,通过学习和实践,可以提升Android应用的用户体验。在实际开发中,可以结合自己的项目需求,对这个示例进行...

    Android通过手势实现的缩放处理.zip项目安卓应用源码下载

    Android通过手势实现的缩放处理.zip项目安卓应用源码下载Android通过手势实现的缩放处理.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    Android通过手势实现的缩放处理.zip

    本项目"Android通过手势实现的缩放处理"聚焦于如何利用手势识别技术来实现图片或其他视图元素的缩放功能。这个源码示例为开发者提供了详细的学习资源,帮助理解Android中的手势检测和处理机制。 1. **手势识别基础*...

    安卓Android源码——通过手势实现的缩放处理 .zip

    本文将深入探讨如何在Android源码中通过手势实现缩放处理,为用户提供更加直观和丰富的操作体验。 首先,理解Android的手势识别机制至关重要。Android系统提供了GestureDetector类,它是一个用于检测常见触摸屏手势...

    android手势处理图片平移、缩放和旋转

    "android手势处理图片平移、缩放和旋转"这个主题涉及到的主要知识点包括Android手势检测、ImageView的扩展以及图片操作。 首先,我们要了解Android的手势检测。Android系统提供了一套GestureDetector和...

    Android通过手势实现的缩放处理-IT计算机-毕业设计.zip

    总之,“Android通过手势实现的缩放处理”这个项目涵盖了Android手势识别、图像缩放、事件处理等多个关键知识点,对于理解和实践Android应用中的交互设计具有重要的参考价值。通过深入学习和实践,开发者可以创建出...

    Android 通过手势实现的缩放处理-IT计算机-毕业设计.zip

    本项目专注于通过手势实现缩放处理,这对于创建如地图、图片查看器或任何需要多点触控功能的应用至关重要。以下是对这个"Android 通过手势实现的缩放处理"的详细解释: 1. **手势识别**: Android提供了`...

    Android通过手势实现的缩放处理.rar

    本教程将深入探讨如何在Android中通过手势处理实现图像的缩放功能,这通常在图片查看器或者地图应用中非常常见。我们将主要关注以下几个核心知识点: 1. **MotionEvent**:在Android中,手势处理主要是通过监听和...

    android 图片手势缩放

    这个示例着重于实现Android图片的手势缩放功能,通过监听用户的触摸事件来调整图片的大小,提供流畅且直观的操作体验。 手势识别在Android中主要依赖于`GestureDetector`和`ScaleGestureDetector`这两个类。`...

    安卓Android源码——通过手势实现的缩放处理.zip

    总结来说,“安卓Android源码——通过手势实现的缩放处理.zip”是一个关于Android手势识别和多点触控处理的实践案例。它展示了如何结合`GestureDetector`和`ScaleGestureDetector`,以及`Matrix`类来实现在Android...

    Android通过手势实现图片和网页的缩放功能

    Android通过手势实现手机屏幕的缩放操作,包括网页上的文字和图片的缩放操作,此为源码实例,演示Android如何通过手势来控制页面的大小缩放操作,本代码主要利用现有的API实现HERO浏览图片和网页的缩放功能。

    android 2个手势缩放ImageView源码及Demo

    - 为了实现手势缩放功能,我们需要创建一个自定义的ImageView子类,重写onTouchEvent()方法。在这里,我们将使用GestureDetector和ScaleGestureDetector实例来解析触摸事件。 3. **效果较好**: - 这个示例可能...

    Android程序研发源码通过手势实现的缩放处理.zip

    本压缩包“Android程序研发源码通过手势实现的缩放处理.zip”提供了关于如何在Android中实现基于手势的缩放功能的源代码示例。 缩放处理通常应用于图像查看器、地图应用或任何需要用户调整内容大小的场景。Android...

    Android ImageView手势缩放 图片详情页

    总结起来,实现"Android ImageView手势缩放 图片详情页"的功能,需要结合GestureDetector、ScaleGestureDetector以及自定义的ZoomImageView,同时处理好图片的加载、缓存和边界条件,以及优化手势操作的性能。...

Global site tag (gtag.js) - Google Analytics