返回顶部
首页 > 资讯 > 移动开发 >Android通过手势实现的缩放处理实例代码
  • 811
分享到

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

手势Android 2022-06-06 10:06:54 811人浏览 泡泡鱼
摘要

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

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

主要原理是onTouchEvent事件中的参数MotionEvent,它有一个getSize()方法。在一个点的时候,该方法永远返回0,而在两个触电的时候,该方法则根据两点相对位置变化而返回不同的值。我们只需计算出两点之间的距离变化,距离的大小表明我们希望目标变化的趋势。而getX()和getY()方法则永远座落在两触点之间,这样趋势和目标我们都有了。剩下的就是对目标根据趋势进行放大或缩小即可。
代码如下:
 
public class MultiTouchTestActivity extends Activity {
 
 @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使用gesturedetector手势识别示例分享Android GestureDetector手势滑动使用实例讲解Android自定义viewgroup可滚动布局 GestureDetector手势监听(5)Android自定义GestureDetector实现手势ImageViewAndroid触摸及手势操作GestureDetectorAndroid手势识别器GestureDetector使用详解Android GestureDetector用户手势检测实例讲解Android实现手势滑动多点触摸放大缩小图片效果Android编程使用GestureDetector实现简单手势监听与处理的方法


--结束END--

本文标题: Android通过手势实现的缩放处理实例代码

本文链接: https://lsjlt.com/news/27706.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作