android开发分享Android通过手势实现的缩放处理实例代码

网络上传言htc的hero-rom支持多点触摸的论证大多源于浏览网页和图片时,能像iphone一样通过手势来控制页面的大小。下面的例子是利用现有的api实现hero浏览图片

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

上述就是android开发分享Android通过手势实现的缩放处理实例代码的全部内容,如果对大家有所用处且需要了解更多关于Android学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

主要原理是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);

  }

 }

}

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/addevelopment/939204.html

(0)
上一篇 2021年11月13日
下一篇 2021年11月13日

精彩推荐