多点触控改变WebView字体大小
实现多个手机操作字体放大缩小,需要重写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);
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。