当前位置: 首页 > news >正文

专业商城网站搭建价格电子外贸网站

专业商城网站搭建价格,电子外贸网站,网页设计与制作教程html,静态网站 搜索功能一、无障碍功能简介 首先我们先来了解下无障碍功能的官方介绍#xff1a; 无障碍服务仅应用于帮助残障用户使用 Android 设备和应用。它们在后台运行#xff0c;并在触发 AccessibilityEvents 时接收系统的回调。此类事件表示用户界面中的某些状态转换#xff0c;例如焦点已…一、无障碍功能简介 首先我们先来了解下无障碍功能的官方介绍 无障碍服务仅应用于帮助残障用户使用 Android 设备和应用。它们在后台运行并在触发 AccessibilityEvents 时接收系统的回调。此类事件表示用户界面中的某些状态转换例如焦点已更改、按钮已被点击等。此类服务可以选择性地请求查询活动窗口内容的功能。开发无障碍服务需要扩展此类并实现其抽象方法。 从以上介绍我们得知可以通过这个系统服务添加全局的活动窗口并对窗口状态做监听。那么我们今天就借助系统的无障碍服务来实现的设备全局水印效果具体的需求内容是添加一个全局的文字透明层同时确保不抢占页面焦点并允许用户在其他应用上继续操作界面。说白了我们要实现的全局水印效果就是实现一个顶层的透明层VIEW只显示出来并不影响应用用户设备操作同时给设备加水印防止设备具体内容被剽窃以保证达到设备安全的目的。 二、设备水印功能实现 在内容实现之前我们先来了解一下几个Window窗口相关的属性。 窗口类型WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY 这种类型的窗口专门为无障碍服务设计能覆盖在所有应用之上而不会影响用户操作。 窗口标志WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE让窗口永远不会获得按键输入焦点因此用户无法向其发送按键或其他按钮事件。 窗口标志WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE让窗口永远不能接收触摸事件。此标志的目的是让位于此窗口下方的某个窗口按 Z 顺序来处理触摸。 窗口标志WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN该标志可以将窗口放置在整个屏幕内忽略来自父窗口的任何限制。 1、 创建无障碍服务 首先创建一个无障碍服务Accessibility Service该服务将用于显示全局的透明水印文字层。 class CustomOverlayService: AccessibilityService() {private lateinit var overlayWindowManager: WindowManagerprivate var overlayView: View? nulloverride fun onServiceConnected() {super.onServiceConnected()// 初始化WindowManageroverlayWindowManager getSystemService(WINDOW_SERVICE) as WindowManager// 加载布局overlayView LayoutInflater.from(this).inflate(R.layout.layout_watermark, null)// 设置布局参数val params: WindowManager.LayoutParams WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY, // 无障碍服务专用类型WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or // 不抢占焦点WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or // 不可触摸WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, // 显示在屏幕上PixelFormat.TRANSLUCENT)// 设置位置例如屏幕中央params.gravity Gravity.CENTER// 添加到WindowManageroverlayWindowManager.addView(overlayView, params)}override fun onDestroy() {super.onDestroy()if (overlayView ! null) {overlayWindowManager.removeView(overlayView)}}RequiresApi(Build.VERSION_CODES.N)override fun onAccessibilityEvent(event: AccessibilityEvent?) {// 无障碍事件处理不做任何操作}override fun onInterrupt() {// 中断时的处理} } 2、定义布局文件 创建显示在Window顶层的透明水印显示布局。 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalLinearLayoutandroid:idid/layout1android:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:layout_marginTop20dpTextViewandroid:layout_width0dpandroid:layout_height100dpandroid:layout_weight1android:gravitycenterandroid:rotation50.0android:textHello 2025android:textColorcolor/light_grayandroid:textSize20sp /TextViewandroid:layout_width0dpandroid:layout_weight1android:layout_heightwrap_contentandroid:gravitycenterandroid:textHello 2025android:rotation50.0android:textColorcolor/light_grayandroid:textSize20sp /TextViewandroid:layout_width0dpandroid:layout_weight1android:layout_heightwrap_contentandroid:gravitycenterandroid:textHello 2025android:rotation50.0android:textColorcolor/light_grayandroid:textSize20sp //LinearLayoutLinearLayoutandroid:idid/layout2android:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:layout_marginTop50dpTextViewandroid:layout_width0dpandroid:layout_height119dpandroid:layout_weight1android:gravitycenterandroid:rotation50.0android:textHello 2025android:textColorcolor/light_grayandroid:textSize20sp /TextViewandroid:layout_width0dpandroid:layout_weight1android:layout_heightwrap_contentandroid:gravitycenterandroid:textHello 2025android:rotation50.0android:textColorcolor/light_grayandroid:textSize20sp /TextViewandroid:layout_width0dpandroid:layout_weight1android:layout_heightwrap_contentandroid:gravitycenterandroid:textHello 2025android:rotation50.0android:textColorcolor/light_grayandroid:textSize20sp //LinearLayoutLinearLayoutandroid:idid/layout3android:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:layout_marginTop50dpTextViewandroid:layout_width0dpandroid:layout_height119dpandroid:layout_weight1android:gravitycenterandroid:rotation50.0android:textHello 2025android:textColorcolor/light_grayandroid:textSize20sp /TextViewandroid:layout_width0dpandroid:layout_weight1android:layout_heightwrap_contentandroid:gravitycenterandroid:textHello 2025android:rotation50.0android:textColorcolor/light_grayandroid:textSize20sp /TextViewandroid:layout_width0dpandroid:layout_weight1android:layout_heightwrap_contentandroid:gravitycenterandroid:textHello 2025android:rotation50.0android:textColorcolor/light_grayandroid:textSize20sp //LinearLayoutLinearLayoutandroid:idid/layout4android:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:layout_marginTop50dpTextViewandroid:layout_width0dpandroid:layout_height119dpandroid:layout_weight1android:gravitycenterandroid:rotation50.0android:textHello 2025android:textColorcolor/light_grayandroid:textSize20sp /TextViewandroid:layout_width0dpandroid:layout_weight1android:layout_heightwrap_contentandroid:gravitycenterandroid:textHello 2025android:rotation50.0android:textColorcolor/light_grayandroid:textSize20sp /TextViewandroid:layout_width0dpandroid:layout_weight1android:layout_heightwrap_contentandroid:gravitycenterandroid:textHello 2025android:rotation50.0android:textColorcolor/light_grayandroid:textSize20sp //LinearLayout/LinearLayout 3、在AndroidManifest.xml 中声明无障碍服务 在应用清单文件AndroidManifest.xml 中声明无障碍服务并配置相关的无障碍权限。 serviceandroid:name.CustomOverlayServiceandroid:exportedtrueandroid:permissionandroid.permission.BIND_ACCESSIBILITY_SERVICEintent-filteraction android:nameandroid.accessibilityservice.AccessibilityService //intent-filtermeta-dataandroid:nameandroid.accessibilityserviceandroid:resourcexml/accessibility_service_config //service 另外上面的android:resource引用的无障碍属性配置文件需要在 res/xml/ 文件夹中创建 accessibility_service_config.xml 文件去配置无障碍服务的相关属性。 accessibility-servicexmlns:androidhttp://schemas.android.com/apk/res/androidandroid:descriptionstring/accessibility_service_descriptionsandroid:accessibilityEventTypestypeAllMaskandroid:canRetrieveWindowContenttrueandroid:packageNamesandroid:notificationTimeout100android:accessibilityFeedbackTypefeedbackAllMaskandroid:accessibilityFlagsflagDefaultandroid:settingsActivity/ 4、启用无障碍服务 写一个页面添加一个开启无障碍服务的按钮点击按钮跳转到系统设置中的辅助功能可以去开启对应应用的无障碍功能开关。具体操作路径为设置 - 辅助功能 - 已安装的服务 中找到你的服务并开启它。 class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)enableEdgeToEdge()setContent {Greeting()}} }Composable fun Greeting() {Column(modifier Modifier.fillMaxSize(),horizontalAlignment Alignment.CenterHorizontally,verticalArrangement Arrangement.Center) {val context: Context LocalContext.currentButton(onClick {if (!isAccessibilityServiceEnabled(context, CustomOverlayService::class.java)) {Log.i(AccessibilityService, AccessibilityService disabled .)context.startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS))} else {Log.i(AccessibilityService, AccessibilityService enabled .)context.startService(Intent(context,CustomOverlayService::class.java))}}, shape ButtonDefaults.textShape) {Text(text 启动无障碍功能)}} }/*** 判断无障碍服务是否开启*/ private fun isAccessibilityServiceEnabled(context: Context, accessibilityServiceClass: Class*): Boolean {var accessibilityEnabled 0val service: String context.packageName.toString() / accessibilityServiceClass.canonicalNametry {accessibilityEnabled Settings.Secure.getInt(context.contentResolver, Settings.Secure.ACCESSIBILITY_ENABLED)} catch (e: Settings.SettingNotFoundException) {e.printStackTrace()}val colonSplitter TextUtils.SimpleStringSplitter(:)if (accessibilityEnabled 1) {val settingValue Settings.Secure.getString(context.contentResolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES)if (settingValue ! null) {colonSplitter.setString(settingValue)while (colonSplitter.hasNext()) {val componentName colonSplitter.next()if (componentName.equals(service, ignoreCase true)) {return true}}}}return false } 5、设备全局水印效果展示 系统设置页面水印 设备锁屏页面水印 三、总结 无障碍服务权限是一个非常强大的工具开启后可以实现很多你意想不到的效果或者功能。比如还可以通过无障碍服务获取设备上运行的最上层应用的包名以及VIEW。后面有空的话我也会深挖更多的无障碍服务相关的功能来展示给大家敬请期待 demo源码请查看文章开头资源链接。
http://www.hkea.cn/news/14460755/

相关文章:

  • 想成为网站设计师要怎么做世界互联网峰会时间
  • 学做网站 书将网页加入可信站点
  • 网站流量狂刷器wordpress浏览人数
  • 汕头网站建设备案长沙做网站哪个最好
  • wordpress多站点site id阳泉做网站多少钱
  • 阿里云建设网站能干嘛网站建设品
  • 天河建设网站专家wordpress 幻燈片 插件
  • 网站备案 多ipwordpress主题制作入门
  • 做网站找哪家好思南2345网址大全天气预报济南
  • 易语言的网站开发系统科凡全屋定制
  • 宁夏小蚁人网站建设火车头 wordpress 发布接口
  • 特价做网站网络营销网站策划
  • 易记域名网站大全网站建设个人信息英文翻译
  • 郑州网站制作怎么样北京网站平台开发
  • 买下云服务器怎么做网站品牌推广的概念
  • 百度收录率高的网站建站公司用哪家服务器
  • 邯郸做网站价格中国万网网站建设过程
  • 网站项目ppt怎么做品牌策划公司有哪些
  • 运城网站建设费用深圳网络推广哪家
  • 用dw制作网站模板闵行区核酸检测点
  • 张家界网站建设的公司固定ip如何做网站服务器
  • 谈谈如何建设企业人力资源网站厦门seo推广外包
  • 网站开发定制合同wordpress文章格式引用
  • 企业网站建设费用账务处理求职网站网页设计
  • 门户网站重要性柳市建设网站
  • 万网网站模板下载互联网服务
  • 团购网站开发与设计wordpress将用户锁在前台
  • 怎么把百度地图放到网站上霸州网站建设
  • 福建省网站建设公司大型免费网页游戏排行榜
  • 简速做网站工作室企业采购平台有哪几个知名