{"id":20472168,"url":"https://github.com/kongqw/androidrocker","last_synced_at":"2025-06-23T09:04:58.678Z","repository":{"id":41512134,"uuid":"67009723","full_name":"kongqw/AndroidRocker","owner":"kongqw","description":"Android 摇杆","archived":false,"fork":false,"pushed_at":"2020-12-14T06:48:43.000Z","size":507,"stargazers_count":278,"open_issues_count":3,"forks_count":70,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-23T09:03:00.036Z","etag":null,"topics":["android","rocker"],"latest_commit_sha":null,"homepage":"http://kongqw.com/2016/09/01/2016-09-01-Android自定义摇杆/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kongqw.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-31T06:25:37.000Z","updated_at":"2025-03-27T02:57:41.000Z","dependencies_parsed_at":"2022-09-08T12:25:05.901Z","dependency_job_id":null,"html_url":"https://github.com/kongqw/AndroidRocker","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kongqw/AndroidRocker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongqw%2FAndroidRocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongqw%2FAndroidRocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongqw%2FAndroidRocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongqw%2FAndroidRocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kongqw","download_url":"https://codeload.github.com/kongqw/AndroidRocker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongqw%2FAndroidRocker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261449737,"owners_count":23159802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","rocker"],"created_at":"2024-11-15T14:18:49.108Z","updated_at":"2025-06-23T09:04:53.665Z","avatar_url":"https://github.com/kongqw.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\n转载请说明出处！\n作者：[kqw攻城狮](http://kongqw.github.io/about/index.html)\n出处：[个人站](http://kongqw.com/2016/09/01/2016-09-01-Android%E8%87%AA%E5%AE%9A%E4%B9%89%E6%91%87%E6%9D%86/) | [CSDN](http://blog.csdn.net/q4878802/article/details/52402529)\n\n---\n\n[![](https://jitpack.io/v/kongqw/AndroidRocker.svg)](https://jitpack.io/#kongqw/AndroidRocker)\n\n# 部署\n\nTo get a Git project into your build:\n\nStep 1. Add the JitPack repository to your build file\n\nAdd it in your root build.gradle at the end of repositories:\n\n``` gradle\nallprojects {\n    repositories {\n        ...\n        maven { url 'https://jitpack.io' }\n    }\n}\n```\n\nStep 2. Add the dependency\n\n``` gradle\ndependencies {\n        compile 'com.github.kongqw:AndroidRocker:1.0.1'\n}\n```\n\n# 使用\n\n## XML\n\n``` xml\n\u003ccom.kongqw.rockerlibrary.view.RockerView\n    android:id=\"@+id/rockerView\"\n    android:layout_width=\"200dp\"\n    android:layout_height=\"200dp\"\n    kongqw:areaBackground=\"@drawable/default_area_bg\"\n    kongqw:rockerBackground=\"@drawable/default_rocker_bg\"\n    kongqw:rockerRadius=\"30dp\" /\u003e\n```\n\n## Activity\n\n### 初始化\n\n``` java\nRockerView rockerView = (RockerView) findViewById(R.id.rockerView);\n```\n\n### 设置回调模式\n\n``` java\n// 设置回调模式\nrockerView.setCallBackMode(RockerView.CallBackMode.CALL_BACK_MODE_STATE_CHANGE);\n```\n\n### 监听摇动方向\n\n``` java\n// 监听摇动方向\nrockerView.setOnShakeListener(RockerView.DirectionMode.DIRECTION_8, new RockerView.OnShakeListener() {\n    @Override\n    public void onStart() {\n        mLogLeft.setText(null);\n    }\n\n    @Override\n    public void direction(RockerView.Direction direction) {\n        mLogLeft.setText(\"摇动方向 : \" + getDirection(direction));\n    }\n\n    @Override\n    public void onFinish() {\n        mLogLeft.setText(null);\n    }\n});\n```\n\n### 监听摇动角度\n\n``` java\n// 监听摇动角度\nrockerViewRight.setOnAngleChangeListener(new RockerView.OnAngleChangeListener() {\n    @Override\n    public void onStart() {\n        mLogRight.setText(null);\n    }\n\n    @Override\n    public void angle(double angle) {\n        mLogRight.setText(\"摇动角度 : \" + angle);\n    }\n\n    @Override\n    public void onFinish() {\n        mLogRight.setText(null);\n    }\n});\n```\n\n-------------------------\n\n# 效果图\n\n![效果图](http://img.blog.csdn.net/20160901182847783)\n\n![效果图](http://img.blog.csdn.net/20160901182902455)\n\n# 源码\n\n[KqwRockerDemo](https://github.com/kongqw/KqwRockerDemo)\n\n喜欢就给个`star`，谢谢！\n\n# 功能\n\n* 支持自适应大小\n* 支持2个方向、4个方向、8个方向的摇动监听\n* 支持摇动角度获取\n* 可选回调模式\n* 支持可摇动区域自定义\n* 支持摇杆自定义\n* 支持设置图片、色值、Share图形\n\n# 使用\n\n``` java\n\u003ckong.qingwei.rockerlibrary.RockerView\n    android:id=\"@+id/rockerView_center\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    android:layout_centerHorizontal=\"true\"\n    kongqw:areaBackground=\"#FF333333\"\n    kongqw:rockerBackground=\"#FF987654\"\n    kongqw:rockerRadius=\"15dp\" /\u003e\n```\n\n\n# 参数\n\n|     参数          | 是否必须 |  描述           |\n|------------------|------|----------------|\n| areaBackground   | 可选 | 可摇动区域的背景 |\n| rockerBackground | 可选 | 摇杆的背景      |\n| rockerRadius     | 可选 | 摇杆半径        |\n\n\n# 设置回调方式\n\n``` java\nsetCallBackMode(CallBackMode mode)\n```\n\n参数\n\n|     回调方式                 | 描述               |\n|-----------------------------|-------------------|\n| CALL_BACK_MODE_MOVE         | 有移动就立刻回调    |\n| CALL_BACK_MODE_STATE_CHANGE | 状态有变化的时候回调 |\n\n\n\n# 监听摇动角度\n\n返回角度的取值范围：[0°,360°)\n\n![取值范围](http://img.blog.csdn.net/20160901183045786)\n\n``` java\nsetOnAngleChangeListener(OnAngleChangeListener listener)\n```\n\n# 监听摇动方向\n\n``` java\nsetOnShakeListener(DirectionMode directionMode, OnShakeListener listener)\n```\n\n支持监听的方向\n\n| 方向                    |  图              | 描述    |\n|------------------------|------------------|------|\n| DIRECTION_2_HORIZONTAL |![左右两个方向](http://img.blog.csdn.net/20160901183144896)| 横向 左右两个方向  |\n| DIRECTION_2_VERTICAL   |![上下两个方向](http://img.blog.csdn.net/20160901183332084)| 纵向 上下两个方向  |\n| DIRECTION_4_ROTATE_0   | ![四个方向](http://img.blog.csdn.net/20160901183347055)          |四个方向          |\n| DIRECTION_4_ROTATE_45  | ![四个方向 旋转45°](http://img.blog.csdn.net/20160901183404461)  |四个方向 旋转45°  |\n| DIRECTION_8            | ![八个方向](http://img.blog.csdn.net/20160901183419477)          |八个方向          |\n\n\n方向描述\n\n| 方向                 | 描述 |\n|----------------------|-----|\n| DIRECTION_LEFT       | 左  |\n| DIRECTION_RIGHT      | 右  |\n| DIRECTION_UP         | 上  |\n| DIRECTION_DOWN       | 下  |\n| DIRECTION_UP_LEFT    | 左上 |\n| DIRECTION_UP_RIGHT   | 右上 |\n| DIRECTION_DOWN_LEFT  | 左下 |\n| DIRECTION_DOWN_RIGHT | 右下 |\n| DIRECTION_CENTER     | 中间 |\n\n\n# 例子\n\n``` java\nRockerView rockerViewLeft = (RockerView) findViewById(R.id.rockerView_left);\nif (rockerViewLeft != null) {\n    rockerViewLeft.setCallBackMode(RockerView.CallBackMode.CALL_BACK_MODE_STATE_CHANGE);\n    rockerViewLeft.setOnShakeListener(RockerView.DirectionMode.DIRECTION_8, new RockerView.OnShakeListener() {\n        @Override\n        public void onStart() {\n            mLogLeft.setText(null);\n        }\n\n        @Override\n        public void direction(RockerView.Direction direction) {\n            mLogLeft.setText(\"摇动方向 : \" + getDirection(direction));\n        }\n\n        @Override\n        public void onFinish() {\n            mLogLeft.setText(null);\n        }\n    });\n}\n\nRockerView rockerViewRight = (RockerView) findViewById(R.id.rockerView_right);\nif (rockerViewRight != null) {\n    rockerViewRight.setOnAngleChangeListener(new RockerView.OnAngleChangeListener() {\n        @Override\n        public void onStart() {\n            mLogRight.setText(null);\n        }\n\n        @Override\n        public void angle(double angle) {\n            mLogRight.setText(\"摇动角度 : \" + angle);\n        }\n\n        @Override\n        public void onFinish() {\n            mLogRight.setText(null);\n        }\n    });\n}\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkongqw%2Fandroidrocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkongqw%2Fandroidrocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkongqw%2Fandroidrocker/lists"}