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

大公无私bathb

大公无私bathb

2016-02-19 09:42

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享Android通过手势实现的缩放处理实例代码吧。

网络上传言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;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  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);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

   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);

  }

 }

}

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Android通过手势实现的缩放处理实例代码

iphone通过手势来代替返回按钮

iphone iPhone 5s iPhone 6 iphone刷机
iphone通过手势来代替返回按钮

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

android LinearLayout 布局实例代码

编程语言 网络编程
android LinearLayout 布局实例代码

Android 图片缩放与旋转的实现详解

编程语言 网络编程
Android 图片缩放与旋转的实现详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

android 大图片拖拽并缩放实现原理

编程语言 网络编程
android 大图片拖拽并缩放实现原理

基于Android中手势交互的实现方法

编程语言 网络编程
基于Android中手势交互的实现方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

家用电脑维护常用的方法

家用电脑维护常用的方法

c# 抓取Web网页数据分析

c# 抓取Web网页数据分析
下拉加载更多内容 ↓