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

Android通过手势实现的缩放处理实例代码,第1张

概述网络上传言HTC的HERO-ROM支持多点触摸的论证大多源于浏览网页和图片时,能像IPhone一样通过手势来控制页面的大小。下面的例子是利用现有的API实现HERO浏览图片和网页的缩放功能。

网络上传言HTC的HERO-ROM支持多点触摸的论证大多源于浏览网页和图片时,能像IPhone一样通过手势来控制页面的大小。下面的例子是利用现有的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);

  }

 }

}

总结

以上是内存溢出为你收集整理的Android通过手势实现的缩放处理实例代码全部内容,希望文章能够帮你解决Android通过手势实现的缩放处理实例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存