Одним из простых способов является использование настраиваемого представления:
- Создание настраиваемого представления
- Рисование кнопки в настраиваемом представлении
- Использование onTouchEvent
- In в MotionEvent.ACTION_MOVE вызывает invalidate ();
- В onDraw вычислите угол между вашим пальцем и центром кнопки с помощью функции atan2 ()
- Затем используйте canvas.rotate длясделайте так, чтобы кнопка следовала за пальцем.
Некоторые примеры, которые могут помочь: Простое настраиваемое представление и способ задания исходных данных (например, объема): Просмотр инфляции и настраиваемые представления
Повернуть растровое изображение: Android: Как повернуть движущийся анимированный спрайт на основе координат его назначения
onTouchEvent и сделать недействительным: Сделать определенную область растрового изображения прозрачной при касании
Как пользовательский вид соединит громкость?Если у вашей активности есть общедоступная переменная статического тома, то пользовательское представление может установить громкость, вызвав MyActivity.volume = (100/360) * angle, или, что еще лучше, у вашей активности может быть публичный статический метод setVolume (volume) {...}который затем может выполнить некоторый код при изменении громкости - в пользовательском представлении кнопки громкости вызов MyActivity.setVolume (volume);