标签:
实现多个手机操作字体放大缩小,需要重写dispatchTouchEvent方法。直接上代码:
public boolean dispatchTouchEvent(MotionEvent event)
{
String fontSize = getSharedPreference("fontSize","normal");//代表储存的字体大小
double startLength;
int eventNum = event.getPointerCount();//获得参与操作的手指数目
if((event.getAction()&MotionEvent.MASK)==MotionEvent.ACTION_POINTER_DOWN&&eventNum==2)//保证两个手指在缩放
{
int sqrtX = Math.abs((int)event.getX(0)-(int)event.getX(0));//获取初始位置横向偏移,取绝对值
int sqrtY = Math.abs((int)event.getY(0)-(int)event.getY(0));//获取初始位置纵向偏移
startLength = Math.sqrt((double)sqrtX*sqrtX+(double)sqrtY*sqrtY);//求得偏移的直线距离,开方
}
else if((event.getAction&MotionEvent.MASK)==MotionEvent_POINTER_UP &&eventNum==2)
{
int sqrtX = Math.abs((int)event.getX(0)-(int)event.getX(0));//获取初始位置横向偏移,取绝对值
int sqrtY = Math.abs((int)event.getY(0)-(int)event.getY(0));//获取初始位置纵向偏移
double endLength = Math.sqrt((double)sqrtX*sqrtX+(double)sqrtY*sqrtY);//求得偏移的直线距离,开方
//ws是WebView实例
if(endLength>startLength)//表示放大文字
{
if (fontSize.equals("smaller")) {
ws.setTextSize(WebSettings.TextSize.NORMAL);
fontSize = "normal";
} else if (fontSize.equals("normal")) {
ws.setTextSize(WebSettings.TextSize.LARGER);
fontSize = "larger";
} else if (fontSize.equals("larger")) {
ws.setTextSize(WebSettings.TextSize.LARGEST);
fontSize = "largest";
} else if (fontSize.equals("largest")) {
ws.setTextSize(WebSettings.TextSize.LARGEST);
fontSize = "largest";
}
}
else//表示缩小字体
{
if(fontSize.equals("normal"))
{
ws.setTextSize(WebSettings.TextSize.SMALLER);
fontSize = "smaller";
}
else if(fontSize.equals("larger"))
{
ws.setTextSize(WebSettings.TextSize.NORMAL);
fontSize = "normal";
}
else if(fontSize.equals("largest"))
{
ws.setTextSize(WebSettings.TextSize.LARGER);
fontSize = "larger";
}
else if(fontSize.equals("smallest"))//保持不变
{
ws.setTextSize(WebSettings.TextSize.smallest);
fontSize = "smallest";
}
}
}
return super.dispatchTouchEvent(event);
}
标签:
原文地址:http://my.oschina.net/lengwei/blog/416331