android聚焦
❶ android中的聚焦状态,这个聚焦表示社么意思
表示当前控件获取了焦点
❷ android自定义相机怎么设置手动聚焦
eclipse(配好android环境的)
android手机一部
方法/步骤
1、首先创建回调方法,代码如下:
触屏调用:设置surfaceView的触屏事件,在该事件中实现camera回调。
❸ android代码上 如何设置自动聚焦 怎样才能验证是否自动聚焦的
相机的自动对焦调用Camera.autoFocus(callback)即可,相机硬件必须支持自动对焦,自动对焦的时候屏幕上有个过程,模糊到清晰,callback函数里面可以知道对焦结果,不需要知道结果可以传null参数进去。
❹ android tv常见问题(四)焦点变化时,Recyclerview是如何进行滚动的
https://github.com/Geekholt/TvFocus
Recyclerview滚动时,聚焦的item位置保持在中间。
需要在计算RecyclerView滑动距离的方法中进行重写,控制每次滑动的距离。先来看看RecyclerView原生的滑动距离计算方法。
当RecyclerView的某个子View需要被定位在屏幕的某个矩形范围时,调用此方法。
这里要注意的是,为了适配v7,需要自定义LayoutManager,不然RecyclerView的requestChildRectangleOnScreen可能无法执行。
如果想要实现一套通用焦点框架,个人想法是在Android原生焦点机制的基础上做一些定制化的操作,或许并不需要完全自己去实现一套焦点框架。
TV端焦点问题的比较复杂的根本问题我认为有两点:
❺ android tv常见问题(一)焦点查找规律
https://github.com/Geekholt/TvFocus
Recyclerview聚焦到最后一个Item,继续按下键,焦点保持不变。
Recyclerview聚焦到最后一个Item,继续按下键,焦点会跳出RecyclerView,跳到附近的View上。
那么当Recyclerview滑动到最底部时,按下键,Android系统是如何找到下一个需要被聚焦的view的呢?我们把断点打在ViewGroup的focusSearch方法上,可以看到从ViewRootImp的performFocusNavigation方法开始,依次调用了如下方法。
View并不会直接去找焦点,而是交给它的parent去找。
焦点会逐级的交给父ViewGroup的focusSearch方法去处理,直到最外层的布局,最后实际上是调用了FocusFinder的findNextFocus方法去寻找新的焦点。
但是这里要注意的是,RecyclerView和其他的ViewGroup不一样,它自己重写了focusSearch方法。所以在焦点查找委托到达到DecorView之前,会先执行RecyclerView的focusSearch方法。
那么,RecyclerView和其他ViewGroup在寻找焦点方面有什么不一样呢? 为什么RecyclerView要重写ViewGroup的焦点查找机制呢 ?想知道这些问题的答案,那我们首先要知道ViewGroup的焦点查找机制。
ViewGroup的焦点查找机制的核心其实就是FocusFinder的findNextFocus方法。
主要步骤:
主要注意三点:
在addFocusables之后,找到指定方向上与当前focused距离最近的view。在进行查找之前,会统一坐标系。
总的来说就是根据当前focused的位置以及按键的方向,循环比较focusable集合中哪一个最适合,然后返回最合适的view,焦点查找就算完成了。
用于比较的方法。分别是将 当前聚焦的view , 当前遍历到的focusable 和 目前为止最合适的focusable (i = 0时是优先级最低的rect)进行比较。
判断是否可以做为候选。可以看作是一个初步筛选的方法,但是到底哪个更好还需要看beamBeat方法,这个方法会将通过筛选的focusable和当前最合适的focusable进行比较,选出更合适的一个。
到这里为止ViewGroup的focusSearch方法基本上就讲完了。那么下面来看一下RecyclerView的focusSearch方法是如何实现焦点查找的。
前面讲到了,该方法主要是为了解决 RecyclerView聚焦在按键方向上、当前屏幕区域内可见的最后一个item时,当前不可见的下一个item将无法获得焦点。
这个方法是由LayoutManager来实现的,这就是RecyclerView的针对上面提到的情况的焦点查找方法。这里主要分析LinearLayoutManager中实现的该方法,如果在使用其他的LayoutManager时出现RecyclelerView焦点不符合预期的话,可以查看对于LayoutManager下的onFocusSearchFailed方法。
主要关注方法,通过这个方法的命名我们大致就可以看出来这个方法的作用了。这个方法主要会 根据当前RecyclerVIew的正逆序以及按键方向,找出最近一个部分或完全不可见的View 。
这个方法是RecyclerView内部的方法,和FocusFinder中的isCandidate方法的逻辑可以说几乎是一摸一样的。
到此为止ViewGroup的focusSearch和RecyclerVIew的focusSearch都分析完了。我们已经知道RecyclerView滑动到最底部的时候,发生了哪些焦点行为,那么解决起来就比较简单了。
结合KeyEvent事件的流转,处理焦点的时机,按照优先级(顺序)依次是:
以上任一处都可以指定焦点,一旦消费了就不再往下走。
比如前面说到了RecyclerView就是通过重写focusSearch方法对边界上部分可见或不可见的view的焦点查找进行了特殊处理。
重写RecyclerView的focusSearch方法
❻ android多个输入框,在启动程序的时候,自动聚焦在第一个,该如何实现
android中,要使控件获得焦点,需要先setFocus,再requestFocus。
以Button为例:
btn.setFocusable(true);
btn.setFocusableInTouchMode(true);
btn.requestFocus();
btn.requestFocusFromTouch();
❼ android中ImageButton有一个聚焦状态,请问下怎样才能触发此状态
ImageButton上设置onFocus ChangeListener与onClickListener实现
❽ 聚焦 Android 11: Android 11 应用兼容性
作者 / Android 产品经理 Diana Wong
在往期 #11WeeksOfAndroid 系列文章中我们介绍了 联系人和身份 、 隐私和安全 ,本期将聚焦 Android 11 兼容性 。我们将为大家陆续带来 #11WeeksOfAndroid 内容,深入探讨 Android 的各个关键技术点,您不会错过任何重要内容。
本期我们将重点探讨 Android 11 兼容性这一对所有开发者都非常重要的主题。对于 Android, 应用兼容性 一词指应用可以在特定版本的 Android (通常是最新版本) 上正常运行。
您可以前往官方网站详细获取可帮助您进行兼容性测试的资源,以及本期所有关于该领域的实用内容和资源!
在每次版本更新中,我们都希望尽量减少应用适配 Android 所需的工作。在 Android 11 中,我们添加了新的流程、开发者工具和版本发布里程碑,以帮助我们最大程度地减少平台更新带来的影响,更轻松实现应用的兼容性。
请继续阅读,详细了解我们如何简化 Android 11 中的应用测试和调试流程。
测试应用是否兼容 Android 新版本可能面临很多挑战,尤其是应用在受到多个平台变更影响的情况下。此过程中可能会出现很多问题:
开发者社区为我们提供了大量相关问题的优质反馈。在 Android 11 中,我们为平台添加了以下新工具,并在 Android Studio 中添加了新功能,因此您可以更加轻松的进行测试。
和往年的更新一样,Android 11 的一些平台变更可能会影响您的应用。尽管这些变更对于提升平台性能至关重要,但我们会尽可能将这些变更安排在平台的最新 targetSDKVersion 之后,以便减少对您的应用的直接改动。在 Android 11 中,我们还会将更多此类平台变更添加到新的 兼容性框架 中。
您可以使用全新开发者工具,针对包含在兼容性框架内的变更对应用进行测试和调试。
例如,我们已将包含在兼容性框架内的变更设为可切换,您可以通过设备的开发者选项或使用 Android ADB 强制启用或停用单个变更。Android 平台会自动调整内部 API 逻辑,因此您无需更改 targetSDKVersion 或重新编译应用,即可执行基本测试。此外,您可以隔离各项变更,从而节省发现和调试应用中问题所需的时间。
在切换变更的启用/停用状态之前,您应该通读 行为变更列表 ,确定哪些变更可能会影响您的应用。包含在兼容性框架内的变更已在变更描述前列出相应的 Change ID 和 Change Name。
一般来说,我们建议您从 影响所有应用的行为变更 开始测试,因为无论 targetSDKVersion 如何,这些变更都可能对您的应用造成影响。我们用下面这个 targetSDKVersion 控制的变更为例,说明您可以如何在不使用其他 targetSDK 重编译应用的情况下,对这些变更进行测试。
在 后台位置访问变更 中,请求始终在后台访问位置的应用会受影响。如果您的应用受到这一变更的影响,那么从该变更开始测试是不错的选择。此变更的名称为 BACKGROUND_RATIONALE_CHANGE_ID,变更 ID 为 147316723。您需要先使用这些信息启用此变更,然后再测试应用因此受到的影响。
确定要测试的变更后,您可以使用开发者选项切换此变更的启用/停用状态。如要使用开发者选项,请打开设备上的 "设置" 应用,导航至 系统 > 高级 > 开发者选项 > 应用兼容性变更 。
开发者选项中可切换的平台变更,后台位置访问变更已启用
在本例中,BACKGROUND_RATIONALE_CHANGE_ID 是唯一已启用的变更,旨在最大程度缩小应用可能遇到的各种问题的原因范围。
您也可以使用 Logcat 或 ADB 识别已启用的变更 ,或 使用 ADB 切换变更的启用/停用状态 。请注意,您只能在使用可调试应用时切换变更。
启用变更后,您可以使用常用的测试工作流来测试和调试应用。如遇到问题,请查看日志,确定问题的原因。如果不确定问题是否由已启用的平台变更引起,您可以尝试停用此变更,然后重新测试应用的同一模块。
如需了解其他相关示例,您可以观看有关 测试 Android 11 中平台变更的视频 ,或阅读 官方文档 。
除了在新平台上手动进行测试外,我们还简化了使用 Android Studio 在最新 Android 系统上运行自动化测试的流程。
从 Android Studio 4.2 开始,我们实现了在多个实体或虚拟设备上并行运行插桩测试 (instrumentation tests)。现在,您可以在运行测试的过程中,从目标设备下拉菜单中选择 多个设备 。
此功能旨在帮助您在开发周期中尽早发现问题,并让您能够比较不同 Android 设备之间的差异。您可以使用 视图 > 工具窗口 > 运行 下的新 测试矩阵 ,研究这些测试的结果。
请观看有关 使用 Android Studio 测试应用兼容性的视频 ,或阅读 官方文档 。
我们建议您尝试这些新工具,并 向我们发送反馈 ,告诉我们这些工具对您是否有用。我们希望这些工具能帮助您更轻松地测试 Android 11 应用兼容情况。