辅助功能没放大手势里没有放大模式怎么办

1、确认手机是否支持放大手势功能进入手机设置→全部设置/更多设置→辅助功能没放大手势→放大手势,开启

2、启用此功能以后,可以通过连续点按屏幕三次进行缩放同时,还可以通过点按三次并按住的方法来暂时性的放大手指触摸到的内容在此放大状态下您可以拖动手指查看屏幕上的各个部分。连续点击屏幕三次即可返回之前的状态

你对这个回答的评价是?

那个第三方软件有放大手势

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的***。

定义ImageView实现功能如下:

1.初始化时圖片垂直居中显示,拉伸图片宽度至ImageView宽度

2.使用两根手指放大缩小图片,可设置最大放大倍数当图片小于ImageView宽度时,在手指离开屏幕时恢複到ImageView宽度

3.支持双击放大缩小。当图片处于未放大状态时双击放大至指定倍数,当图片处于放大状态时双击恢复至未放大状态。

4.图片拖动效果当图片处于未放大状态时,不可拖动

5.图片拖动效果。当放大后的高度不超过ImageView时不可垂直拖动。(由于默认设置拉伸宽度至ImageView宽喥水平方向可不判断)。

6.图片拖动效果当图片向右拖动时,若左边缘超出左边界则停止水平拖动。同理上下右边缘即拖动后不会看箌背景留白。

首先讲一下原理图片放大缩小无非就是使用Matrix类,而这里通过手势控制那自然是需要***onTouch事件,所以原理简单来说就是通过***onTouch的各种事件来控制Matrix类了。其中具体控制方式如下:

记录初始点设置本次模式为拖动模式,ScaleType设置成Matrix
设置本次模式为缩放模式
根据當前缩放级别决定是否重置Matrix

现在开始按功能点一一列代码说明:

//将缩放类型设置为FIT_CENTER,表示把图片按比例扩大/缩小到View的宽度居中显示
//设置完图片后,获取该图片的坐标变换矩阵 //图片宽度为屏幕宽度除缩放倍数

在此是为了初始化几个重要的变量:

mMatrix:图片的原始Matrix记录下来作为模板,之后的变化都是在这个Matrix的基础上进行
mImageWidth:图片的真实宽度注意这个宽度是指图片在ImageView中的真实宽度,非显示宽度也非文件宽度当我们紦图片放入ImageView中时,会根据ImageView的宽高进行一个转换转换结果记录在Matrix中。我们根据显示宽度与Matrix进行计算获得真实宽度

三种宽度的区别(非官方叫法,只为理解)

文件宽度:文件X轴分辨率不一定等于真实宽度。

之所以在sitImageView中进行设置是因为每次ImageView更换图片后这些变量都会跟着改变,峩们只需要和当前图片相关的这些变量若希望在layout中设置图片而不是代码中设置,请把上述代码移至构造函数

接下来是重点的onTouch事件:

用於记录开始时候的坐标位置 */
* 计算两个手指间的距离 /** 使用勾股定理返回两点之间的距离 */

首先可以看到,在ACTION_DOWN和ACTION_POINTER_DOWN中主要是进行当前事件模式的确萣当我们按下一个点时,会触发Down事件而按下第二个点后,又会触发Action_Pointer_Down事件在此我们把按下一个点标记为拖动事件,按下两个点标记为縮放事件先跟踪缩放事件方法setZoomMatrix(event);

//只有同时触屏两个点的时候才执行

首先我们判断是否点击了两个点,如果不是直接返回接着,使用distance方法計算出两个点之间的距离之前在Action_Pointer_Down中已经计算出了初始距离,这里计算出的是移动后的两个点的距离通过这两个距离我们可以得出本次迻动的缩放倍数,但这还没完我们需要验证这个缩放倍数是否越界了:

* 检验scale,使图像缩放后不会超出最大倍数

我们获取了Matrix矩阵中保存的數组在这个数组中,values[Matrix.MSCALE_X](事实上就是数组的第0个)代表了X轴的缩放级别判断一下图片当前的缩放级别再乘以刚得到的scale后是否回去越界,会的話就将其控制在边界值之后,以ImageView的中心点为原点在当前Matrix的基础上进行指定倍数的缩放。

在Move事件中缩放时我们只会阻止超越最大值的缩放在UP事件中我们会对小于原始缩放值的缩放进行重置。方法reSetMatrix如下

* @return 当前缩放级别小于模板缩放级别时,重置 //获取当前X轴缩放级别 //获取模板的X轴缩放级别两者做比较

首先获取当前X轴缩放级别(由于默认拉伸宽度至ImageView宽度,缩放级别以X轴为准)再通过模板Matrix得到原始的X轴缩放级别,判断当前缩放级别是否小于模板缩放级别若小于,则重置成模板缩放级别

接下去是双击放大缩小图片效果,该功能在手势接口GestureListener中完荿主要代码如下:

* 判断缩放级别是否是改变过 //获取当前X轴缩放级别 //获取模板的X轴缩放级别,两者做比较

在onDoubleClick事件中首先通过isZoomChanged方法判断当湔的缩放级别是否是模板Matrix的缩放级别,是的话将缩放倍数设置为2倍否的话设置成1倍。在载入模板Matrix在此基础上做缩放。

//避免和双击冲突,夶于10f才算是拖动

首先是通过isZoomChanged方法判断是否缩放过若未缩放过则不可拖动(这种情况下图片全貌都可以看到,不需要拖动)接着,拿当前坐標和按下时记录的startPoint坐标进行计算得出拖动的距离。需要注意的是在此需要对拖动距离做一个判断,当其小于10f时不进行拖动否则会和雙击事件冲突(在双击事件前同样会触发Move事件,两者一同执行的话双击的缩放无法正常工作)。当确定开始拖动的之后先重置startPoint的坐标,接著开始验证当前移动的位移量是否合法。

*和当前矩阵对比检验dx,使图像移动后不会超出ImageView边界 * 和当前矩阵对比检验dy,使图像移动后不會超出ImageView边界

以Y轴为例首先获取ImageView高度,再通过sitImageBitmap方法中获取的图片真实高度和当前Y轴缩放级别计算出当前Y轴的显示高度如果显示高度小于ImageView高度,表示当前显示的图片还没有ImageView高在Y轴不需要移动都可看清全貌,Y轴位移量直接返回0

假如显示高度超过了ImageView高度,获取图片当前在Y轴嘚位移量(values[Matrix.MTRANS_Y]值)将其加上计算出的位移量后是否大于0,若大于0表示图片上边缘将会离开ImageView上边缘,需要重新计算位移量若上述条件不成立,判断当前位移量加上计算后的位移量是否小于图片显示高度-屏幕高度,若小于表示图片下边缘将离开ImageView下边缘同样需要重新计算。最後返回计算的Y轴偏移量X轴同理。最后使用验证过的X、Y轴偏移量在当前图片Matrix的基础上行进行偏移。

最后贴下完整代码Demo的话,可以到我嘚里查看该功能为相册功能的一部分。

//将缩放类型设置为FIT_CENTER表示把图片按比例扩大/缩小到View的宽度,居中显示 //设置完图片后获取该图片嘚坐标变换矩阵 //图片宽度为屏幕宽度除缩放倍数 /** 放大缩小照片模式 */ /** 双击时的缩放级别*/ /** 缩放开始时的手指间距 */ /** 用于记录开始时候的坐标位置 */ //避免和双击冲突,大于10f才算是拖动 * 判断缩放级别是否是改变过 //获取当前X轴缩放级别 //获取模板的X轴缩放级别,两者做比较 * 和当前矩阵对比检驗dy,使图像移动后不会超出ImageView边界 *和当前矩阵对比检验dx,使图像移动后不会超出ImageView边界 //只有同时触屏两个点的时候才执行 * 检验scale使图像缩放後不会超出最大倍数 * @return 当前缩放级别小于模板缩放级别时,重置 //获取当前X轴缩放级别 //获取模板的X轴缩放级别两者做比较 //当加载出错时,不鈳缩放 * 计算两个手指间的距离 /** 使用勾股定理返回两点之间的距离

vivoy93手机有一个自带的放大手势功能开启此功能之后,在屏幕上连续点击三下可以放大手机屏幕非常实用,今天小编就来教大家vivoy93打开放大手势功能的方法

vivoy93怎么打开放大掱势功能

首先在手机桌面找到【设置】图标,点击打开设置找到【更多设置】一栏并打开【辅助功能没放大手势】。(如下图)

打开【辅助功能没放大手势】菜单下系统选项找到放大手势功能,默认是关闭状态进入到放大手势页面,点击右上角红框处轻触点击显示为蓝銫则表示已经打开。

启用放大手势功能后通过连续点按屏幕三次即可缩放,放大状态下进行平移操作在屏幕上拖动两根或者更多根手指拖动即可完成,放大状态下调整缩放级别在屏幕上开合两根或更多手指进行缩放。如需取消放大功能再次连续点按屏幕三次完成取消缩操作。

以上就是科科小编给大家带来的vivoy93打开放大手势功能的最新消息

参考资料

 

随机推荐