Skip to content

Most visited

Recently visited

navigation

Rotary Input

Some Android Wear devices support rotary input, such as a rotating side button (RSB). When the user turns the button, your app's current view should scroll up or down.

If you are using ScrollView, ListView, HorizontalScrollView, or WearableRecyclerView in your app, then your app's view gets rotary input support by default. If you are using custom views other than those listed, or if you want to manually handle rotary input events, see Adding Custom Rotary Input Scrolling.

Focus Best Practices

In order to respond to rotary input events, your scroll view must be in focus. In most cases, this happens automatically; your scrolling view becomes focused immediately after you create your Activity. However, there are situations where you need to manually handle focus of your app's view, such as:

Adding Custom Rotary Input Scrolling

If your scrollable view doesn't natively support rotary input scrolling, or if you want to do something other than scrolling in response to rotary input events (zoom in/out, turn dials, etc.), you can use the RotaryEncoder methods in the Wearable Support Library.

The following code snippet shows how to use RotaryEncoder to add custom scrolling in your app's view:

myView.setOnGenericMotionListener(new View.OnGenericMotionListener() {
    @Override
    public boolean onGenericMotion(View v, MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_SCROLL && RotaryEncoder.isFromRotaryEncoder(ev)) {
            // Don't forget the negation here
            float delta = -RotaryEncoder.getRotaryAxisValue(ev) * RotaryEncoder.getScaledScrollFactor(
            getContext());

            // Swap these axes if you want to do horizontal scrolling instead
            scrollBy(0, Math.round(delta));

            return true;
        }

        return false;
    }
});

Focus Behavior Tips

This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.