android手势缩放改变字体大小

今天看到网上有人写的自定义TextView  来实现文本字体手势缩放来改变字体大小,

主要是通过手势来判断手指落下的俩点之间的距离有没有变化,如果俩点的距离一直在变化,那么就是要进行缩放操作,然后调用缩放的代码

private void setTouchListener()
{
view.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
mode = DRAG;
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
if (oldDist > 0)
{
mode = ZOOM;
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == ZOOM)
{
// 正在移动的点距初始点的距离
float newDist = spacing(event);


if (newDist > oldDist)
{
zoomOut();
}
if (newDist < oldDist)
{
zoomIn();
}
oldDist=newDist;
}
break;
}
return true;
}


/**
* 求出2个触点间的 距离

* @param event
* @return
*/
private float spacing(MotionEvent event)
{
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(x * x + y * y);
}
});
}





/**
* 放大
*/
protected void zoomOut()
{
textSize += scale;
if (textSize > MAX_TEXT_SIZE)
{
textSize = MAX_TEXT_SIZE;
}
view.setTextSize(textSize);
}


/**
* 缩小
*/
protected void zoomIn()
{
textSize -= scale;
if (textSize < MIN_TEXT_SIZE)
{
textSize = MIN_TEXT_SIZE;
}
view.setTextSize(textSize);
}

上一篇:通过onTouch来确定点击的是listView哪一个item


下一篇:android 控件设置背景以后再代码中改变的时候对不其