view类不响应自定义消息_安卓平台如何给控件添加自定义操作?
在安卓應用設計和開發過程中,設計人員為了界面簡潔、有獨特的交互方式,可能會為控件設計特殊的操作手勢,例如消息列表中單指按住消息向左滑刪除消息;系統頂部的通知單指向左滑可以關閉通知等。
這些操作對于普通用戶非常方便,但是此種操作方式沒有做特殊支持的話,可能讓某些障礙用戶無法使用此功能。如果是一名通過屏幕閱讀器使用應用的視障用戶,他們就很難借助屏幕閱讀器完成此操作。
此時,應該像原生Android系統中的通知一樣給控件添加自定義操作提示和操作支持。
1、添加自定義操作
重寫View類OnInitialzeAccessibilityNodeInfo()的方法:
如果是標準控件,可以通過無障礙代理View.AccessibilityDelegate重寫此方法。
在此方法中首先調用父類的實現,然后調用AccessibilityNodeInfo對象的addAction方法添加自定義的事件。
注意:
1.這里添加的自定義事件的事件ID必須大于16進制的0x01ffffff,因為0x01ffffff本身以及小于此值都是系統定義的事件的ID。
2.自定義事件必須提供事件描述文本,不提供描述文本無障礙服務將無法提示和獲取到此事件。下面是樣例代碼:
@Overrideprotected void onInitialzeAccessibilityNodeInfo(AccessibilityNodeInfo info){
//調用父類實現
super.onInitializeAccessibilityNodeInfo(info);
//設置自定義事件
node.addAction(new AccessibilityAction(0x02000000, "菜單1"));
node.addAction(new AccessibilityAction(0x02fffffe, "菜單2"));
}
2、響應自定義操作
添加了自定義操作事件之后,還需要處理用戶的自定義操作,這樣用戶在通過無障礙服務操作這些自定義事件時,才能得到正確的響應結果。重寫performAccessibilityAction()方法,在此方法中響應對應的事件ID的操作。如下面樣例代碼所示:
//返回true表示此方法已經處理完事件,返回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的自定義操作菜單:
點擊操作菜單的執行結果:
簡單的兩步處理就能讓你的應用更方便屏幕閱讀器用戶使用,快看看你的應用中哪里可以使用此技巧吧!花點兒時間應用上此方法,讓你的應用更加高大上。
總結
以上是生活随笔為你收集整理的view类不响应自定义消息_安卓平台如何给控件添加自定义操作?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农商行10万定期三年利息多少?附计算公式
- 下一篇: 99元!小米发布8K HDMI 2.1数