view类不响应自定义消息_安卓平台如何给控件添加自定义操作?
在安卓應(yīng)用設(shè)計和開發(fā)過程中,設(shè)計人員為了界面簡潔、有獨特的交互方式,可能會為控件設(shè)計特殊的操作手勢,例如消息列表中單指按住消息向左滑刪除消息;系統(tǒng)頂部的通知單指向左滑可以關(guān)閉通知等。
這些操作對于普通用戶非常方便,但是此種操作方式?jīng)]有做特殊支持的話,可能讓某些障礙用戶無法使用此功能。如果是一名通過屏幕閱讀器使用應(yīng)用的視障用戶,他們就很難借助屏幕閱讀器完成此操作。
此時,應(yīng)該像原生Android系統(tǒng)中的通知一樣給控件添加自定義操作提示和操作支持。
1、添加自定義操作
重寫View類OnInitialzeAccessibilityNodeInfo()的方法:
如果是標(biāo)準(zhǔn)控件,可以通過無障礙代理View.AccessibilityDelegate重寫此方法。
在此方法中首先調(diào)用父類的實現(xiàn),然后調(diào)用AccessibilityNodeInfo對象的addAction方法添加自定義的事件。
注意:
1.這里添加的自定義事件的事件ID必須大于16進(jìn)制的0x01ffffff,因為0x01ffffff本身以及小于此值都是系統(tǒng)定義的事件的ID。
2.自定義事件必須提供事件描述文本,不提供描述文本無障礙服務(wù)將無法提示和獲取到此事件。下面是樣例代碼:
@Overrideprotected void onInitialzeAccessibilityNodeInfo(AccessibilityNodeInfo info){
//調(diào)用父類實現(xiàn)
super.onInitializeAccessibilityNodeInfo(info);
//設(shè)置自定義事件
node.addAction(new AccessibilityAction(0x02000000, "菜單1"));
node.addAction(new AccessibilityAction(0x02fffffe, "菜單2"));
}
2、響應(yīng)自定義操作
添加了自定義操作事件之后,還需要處理用戶的自定義操作,這樣用戶在通過無障礙服務(wù)操作這些自定義事件時,才能得到正確的響應(yīng)結(jié)果。重寫performAccessibilityAction()方法,在此方法中響應(yīng)對應(yīng)的事件ID的操作。如下面樣例代碼所示:
//返回true表示此方法已經(jīng)處理完事件,返回false表示事件未處理完@Override
Protected boolean performAccessibilityAction(int action, Bundle data) {
Switch (action) {
Case 0x02000000: //菜單1的處理,這里簡單的彈出提示信息
Toast.makeText(context, “你點擊了菜單1”, Toast.LENGTH_SHORT).show();
Return true;
Case 0x02fffffe: //菜單2的點擊處理
Toast.makeText(context, “你點擊了菜單2”, Toast.LENGTH_SHORT).show();
Return true;
}
Return false;
}
TalkBack朗讀自定義提示:
TalkBack的自定義操作菜單:
點擊操作菜單的執(zhí)行結(jié)果:
簡單的兩步處理就能讓你的應(yīng)用更方便屏幕閱讀器用戶使用,快看看你的應(yīng)用中哪里可以使用此技巧吧!花點兒時間應(yīng)用上此方法,讓你的應(yīng)用更加高大上。
總結(jié)
以上是生活随笔為你收集整理的view类不响应自定义消息_安卓平台如何给控件添加自定义操作?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农商行10万定期三年利息多少?附计算公式
- 下一篇: 二叉树的深度_十七:二叉树的最小深度