android 手势放缩_Android手势实现缩放

本文介绍了如何在Android中实现手势缩放功能。通过自定义`MultiTouchView`类,覆盖`onTouchEvent`方法来捕获多点触摸事件,根据触摸点的间距计算缩放比例,并在`onDraw`方法中更新视图。示例代码展示了如何计算并绘制缩放后的圆。
摘要由CSDN通过智能技术生成

import android.app.Activity;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.os.Bundle;

import android.util.DisplayMetrics;

import android.view.MotionEvent;

import android.view.View;

/**

* ...

*

* @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 &gt&gt 12;

int dyit = ((1 &lt&lt 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 &gt= r ? 50 : r;

Paint paint = new Paint();

paint.setColor(Color.BLUE);

canvas.drawCircle(x1, y1, r, paint);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值