Sự khác biệt giữa FocusableInTouchMode có thể tập trung và tiêu điểm?


82

Tôi muốn biết sự khác biệt thực sự giữa chúng ... Mỗi cái nên được sử dụng khi nào, mỗi cái nên được sử dụng như thế nào và mỗi cái hữu ích trong những trường hợp nào?

Đưa ra một số ví dụ và giải thích chúng chi tiết.



android-developers.blogspot.fi/2008/12/touch-mode.html Đây Romain nói rằng việc sử dụng focusableInTouchMode nên tránh, trừ khi bạn đang phát triển một trò chơi
Niko

2
if focusable = false - bạn không thể tập trung chế độ xem này, ngay cả EditText nếu bạn nhấn nút Tiếp theo trên bàn phím.
Volodymyr Kulyk

Câu trả lời:


77

Nó được giải thích trong Blog nhà phát triển Android: http://android-developers.blogspot.co.at/2008/12/touch-mode.html

Các trích dẫn sau đây sẽ làm cho nó rõ ràng:

Bản thân nó, chế độ cảm ứng là một cái gì đó rất dễ hiểu vì nó chỉ đơn giản cho biết liệu tương tác cuối cùng của người dùng có được thực hiện với màn hình cảm ứng hay không. Ví dụ: nếu bạn đang sử dụng điện thoại G1, việc chọn một widget với bi xoay sẽ đưa bạn ra khỏi chế độ cảm ứng;

...

Ở chế độ cảm ứng, không có tiêu điểm và không có lựa chọn. Bất kỳ mục nào đã chọn trong danh sách lưới sẽ không được chọn ngay sau khi người dùng vào chế độ cảm ứng. Tương tự, bất kỳ tiện ích con nào tập trung trở nên không tập trung khi người dùng vào chế độ cảm ứng.

...

Bây giờ bạn đã biết tiêu điểm không tồn tại ở chế độ cảm ứng, tôi phải giải thích rằng điều đó không hoàn toàn đúng. Lấy nét có thể tồn tại ở chế độ cảm ứng nhưng theo một cách rất đặc biệt mà chúng tôi gọi là có thể lấy nét ở chế độ cảm ứng. Chế độ đặc biệt này được tạo cho các tiện ích con nhận đầu vào văn bản, như EditText hoặc, khi tính năng lọc được bật, ListView.

...

Focusable trong chế độ cảm ứng là một thuộc tính mà bạn có thể tự đặt từ mã hoặc XML. Tuy nhiên, nó nên được sử dụng một cách tiết kiệm và chỉ trong những tình huống rất cụ thể vì nó phá vỡ tính nhất quán với hành vi bình thường của Android. Trò chơi là một ví dụ điển hình về một ứng dụng có thể sử dụng tốt thuộc tính có thể lấy nét trong chế độ cảm ứng. MapView, nếu được sử dụng ở chế độ toàn màn hình như trong Google Maps, là một ví dụ điển hình khác về nơi bạn có thể sử dụng có thể lấy nét ở chế độ cảm ứng một cách chính xác.


5
Câu trả lời hay trong phong cách SO thích hợp. Cảm ơn
Joop

11

Đưa ra một số ví dụ và giải thích chúng chi tiết

Tôi sẽ cung cấp cho bạn kinh nghiệm của riêng tôi:

Tôi đã có một ứng dụng Google TV có hoạt động với rất nhiều ImageButtons.

Tôi muốn ImageButtons có thể chọn được.

Vì vậy, nếu một người nhấp vào chúng bằng chuột hoặc bộ điều khiển từ xa, chúng sẽ chỉ được chọn (Được đánh dấu trong trường hợp của tôi). Sau đó, nếu người dùng nhấn vào mục đã chọn ImageButton, hành động sẽ kích hoạt. Hành vi chính xác này đã đạt được thông qua việc kích hoạt thuộc focusableInTouchModetính thông qua bố cục XML.

Tất cả những gì tôi phải làm là đặt bình thường onClickListenercho ImageButtons và thì đấy!

Tôi chưa kiểm tra ứng dụng của mình trên thiết bị cầm tay nhưng tôi đoán nó sẽ mang lại kết quả quen thuộc.

BIÊN TẬP

Khi nào?

Tôi đã nói với bạn một trường hợp sử dụng mà tôi đã thử nghiệm: Khi bạn muốn Nút của onClickListenermình kích hoạt hành động trong lần nhấp thứ hai, sau khi bạn nhấp lần đầu tiên và chọn Button.

Tôi đã sử dụng lần nhấp đầu tiên để lấy "tiêu điểm" và hiển thị hoạt ảnh Phóng to theo tỷ lệ Phóng to trên nút của tôi.

Làm sao?

Chỉ cần đặt thuộc tính của nút focusableInTouchModethành truetrong tệp bố cục XML của bạn.


khi nào sử dụng chúng. làm thế nào họ là hữu ích
AndroidGeek

7

Lấy nét là một trạng thái cho chế độ xem và thường có thể thay đổi tiêu điểm bằng trackball và dpad. Chế độ xem của bạn có thể có nền khác khi trạng thái được lấy nét.

Có thể lấy nét ở chế độ cảm ứng cho phép chế độ xem lấy nét khi người dùng chạm vào chế độ xem, ví dụ điển hình về loại thành phần này là EditText.

Với Buttonhoặc bất kỳ thành phần có thể nhấp nào, trạng thái được nhấn thường là điều bạn quan tâm.


"Với Nút hoặc bất kỳ thành phần có thể nhấp nào, thay vào đó, bạn nên tập trung vào trạng thái được nhấn." gì? phần còn lại của câu trả lời +1
ataulm 12/10/15

3

Người dùng có thể tương tác với thiết bị của họ bằng cách sử dụng các phím hoặc nút phần cứng hoặc bằng cách chạm vào màn hình. Chạm vào màn hình sẽ đưa thiết bị vào chế độ cảm ứng. Sau đó, người dùng có thể tương tác với nó bằng cách chạm vào các nút ảo trên màn hình, hình ảnh, v.v.

Để kiểm tra xem thiết bị có ở chế độ cảm ứng hay không, hãy gọi phương thức isInTouchMode () của lớp View .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.