日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

view类不响应自定义消息_安卓平台如何给控件添加自定义操作?

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 view类不响应自定义消息_安卓平台如何给控件添加自定义操作? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在安卓應用設計和開發過程中,設計人員為了界面簡潔、有獨特的交互方式,可能會為控件設計特殊的操作手勢,例如消息列表中單指按住消息向左滑刪除消息;系統頂部的通知單指向左滑可以關閉通知等。

這些操作對于普通用戶非常方便,但是此種操作方式沒有做特殊支持的話,可能讓某些障礙用戶無法使用此功能。如果是一名通過屏幕閱讀器使用應用的視障用戶,他們就很難借助屏幕閱讀器完成此操作。

此時,應該像原生Android系統中的通知一樣給控件添加自定義操作提示和操作支持。

1、添加自定義操作

重寫View類OnInitialzeAccessibilityNodeInfo()的方法:

如果是標準控件,可以通過無障礙代理View.AccessibilityDelegate重寫此方法。

在此方法中首先調用父類的實現,然后調用AccessibilityNodeInfo對象的addAction方法添加自定義的事件。

注意:

1.這里添加的自定義事件的事件ID必須大于16進制的0x01ffffff,因為0x01ffffff本身以及小于此值都是系統定義的事件的ID。

2.自定義事件必須提供事件描述文本,不提供描述文本無障礙服務將無法提示和獲取到此事件。下面是樣例代碼:

@Override
protected 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类不响应自定义消息_安卓平台如何给控件添加自定义操作?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。