Android中的神器-放大镜
文章目录
- 一、前言
- 二、放大镜的使用
- 2.1 API调用
- 2.2 在用户交互中使用放大镜
- 三、观后语
一、前言
在Android 9(API level 28)及以上版本,支持放大镜功能,这个功能可以提高文本插入、选择的用户体验,可供用户看清细小的文字,例如:地图上的地名。放大镜功能在系统控件,例如:TextView
、EditText
、WebView
中已经集成。效果如下图:
不过可惜的是,放大镜功能只能通过系统API调用,也就是只能在Android 9(API level 28)及以上版本中使用,没有提供可用与替代的支持库。
二、放大镜的使用
2.1 API调用
放大镜功能的API调用也非常简单,简单来说可以拆分为以下几步:
- 获取需要放大镜功能的控件;
- 以控件对象作为参数,构建
Magnifier
放大镜对象; - 显示放大镜;
- 隐藏放大镜。
如果放大镜对象创建后,需要更改放大镜的属性,还需要更新
update
放大镜,否则设置的属性将不会生效,详情请参考:Magnifier类详情
val view = findViewById<TextView>(R.id.tvMsg)
val m = Magnifier(view)
// 注意:显示放大境时(调用show()接口),确保添加放大镜功能的控件已经绘制完成,否则会出现空指针异常。
m.show(view.width / 2.0f, view.height / 2.0f)
在新的API中,创建
Magnifier
对象的方法采用Builder
构建,通过构造函数的方式已被废弃。
2.2 在用户交互中使用放大镜
静止的放大镜并不能体现它的优点,如果在用户交互中使用放大镜功能,就能体验放大镜功能的好处,例如放大查看TextView
细小的文本、选择文本时放大光标所在位置等,下面是一个简单的放大查看TextView
文本的示例代码。
val view = findViewById<TextView>(R.id.tvMsg)val m = Magnifier(view)view.setOnTouchListener { v, event ->when (event.action) {MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE -> {val viewPosition = IntArray(2)v.getLocationOnScreen(viewPosition)m.show(event.rawX - viewPosition[0], event.rawY - viewPosition[1])}MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_UP -> {m.dismiss()}}true
}
上面的例子就是放大手指触摸处的放大镜效果。
需要注意的是,如果在你添加放大镜功能控件上面添加了其他图层,放大镜也会放大图层上面的内容,换句话说,放大镜只会放大顶层所能看到的内容,并不是只放大显示创建放大镜时传入的控件的内容。如下图,在
TextView
上面添加了一个Button
,当放大镜移动到Button
上面时,显示的是Button
的内容,而不是被遮挡的TextView
的内容。
三、观后语
放大镜的功能可以提高用户体验,但是可惜的是并没有提供支持库兼容低版本系统,使用的局限性比较大,如果需要在自己的项目中使用,且项目需要兼容低版本系统,请做好版本兼容相关工作。
Android中的神器-放大镜相关推荐
- android libbfaac.so,Android中Json数据读取与创建
一: Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...
- Android中怎么破解游戏之修改金币数
我们在玩游戏的时候总是会遇到一些东东需要进行购买的,但是我们可能又舍不得花钱,那么我们该怎么办呢?那就是用游戏外挂吧!我们这里说的是Android中的游戏,在网上搜索一下移动端游戏外挂,可能会找到一款 ...
- Android 屏幕适配神器ScreenMatch
Android屏幕适配 一.smallestWidth限定符 适配(推荐) 1.smallestWidth 限定符适配原理 2.为什么选择 smallestWidth 限定符适配? 3.使用步骤(重点 ...
- Android安全测试神器大全
在线分析 1. AndroTotal 2. Tracedroid 3. Visual Threat 4. Mobile Malware Sandbox 5. Appknox – 非免费 6. IBM ...
- 抓包工具Fidder详解(主要来抓取Android中app的请求)
$*********************************************************************************************$ 博主推荐 ...
- 为何说Android ViewDragHelper是神器 (二)
前言: 通过上一篇的为何说Android ViewDragHelper是神器 (一)中我们简单了解了ViewDragHelper的用法,然后实现了一个"view随手指滑动而滑动"的 ...
- Android中实现为TextView添加多个可点击的文本
这篇文章主要介绍了Android中实现为TextView添加多个可点击的文本,可实现类似Android社交软件显示点赞用户并通过用户名称进入该用户主页的功能,是非常实用的技巧,需要的朋友可以参考下.具 ...
- android 弹出fragment,Android中ViewPager获取当前显示的Fragment
前言 在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment ...
- android 读取内部存储文件格式,Android中的数据储存之文件存储
当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互 例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢 ...
- android中一种不支持的lua操作
今天写了一段lua代码,在win32中正常运行,在android中运行无效. 大概是这样的: ------file1.lua----- local t = {} t.str = "this ...
最新文章
- Parallel 并发编程实例
- 声明:此资源由本博客收集整理于网络,只用于交流学习,请勿用作它途。如有侵权,请联系, 删除处理。...
- 【有三说深度学习】深度学习前夕
- java中递归的概念_【Java】基础38:什么叫递归?
- 龙芯3A5000初样顺利交付流片
- linux下python版本升级,linux下升级python版本
- 如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
- 在FL Studio中编辑视频中的音频
- 我国大陆地区省市区MySQL数据(1)
- Linux之进程管理——查看进程
- 友盟统计前台页面图表或文字的隐藏方法
- Android破解九宫格密码
- Docker错误合集
- html怎么给图片加鼠标滑过效果,jquery给图片添加鼠标经过时的边框效果
- Outlook2007备份邮件规则、联系人以及账号及在Outlook 2007中删除自动记忆的收件人...
- 名人投资加密货币:推动行业发展的重要力量(连载:四)
- ArcGIS10.6汉化教程以及安装包介绍
- 打造属于你自己的Mac 机器人助手
- E: Release file for http://xxx is not valid yet (invalid for another 8h 3min 53s). Updates for this
- ecmall mysql.php_ECMall支持SSL连接邮件服务器的配置方法详解