安卓虚拟摇杆
2015-09-15 19:43
645 查看
Rocker
安卓虚拟摇杆作者微博: @安卓攻城师sloop
获取代码:Rocker
说明
由于需要制作一个控制小车移动的应用,使用按键控制不太舒服,故制作了一个虚拟摇杆。该摇杆原理十分简单,就是继承一个surfaceView,然后根据用户操作不断重绘界面,同时返回给用户当前角度。
如果用户不指定摇杆背景和摇杆,则默认绘制两个圆形,效果如下图所示。
摇杆的图片和背景图片可以随意指定,并且在运行过程中也可以更换(ps:图片内容需要为圆形且背景透明),指定图片后效果如下:
点击这里可以观看效果视频
使用示例:
1.在布局文件中添加摇杆
<com.sloop.widget.Rocker android:id="@+id/rudder" android:layout_width="match_parent" android:layout_height="match_parent" />
2.找到该组件,指定摇杆图片和背景图片(可省略)
Rocker rocker = (Rocker) findViewById(R.id.rudder); Bitmap rocker_bg = BitmapFactory.decodeResource(getResources(), R.drawable.rocker_bg1); Bitmap rocker_ctrl = BitmapFactory.decodeResource(getResources(), R.drawable.rocker_ctrl); rocker.setRockerBg(rocker_bg); rocker.setRockerCtrl(rocker_ctrl);
3.设置监听器获得摇杆状态
rocker.setRudderListener(new Rocker.RudderListener() { @Override public void onSteeringWheelChanged(int action, int angle) { if (action == Rocker.ACTION_RUDDER) { //TODO:事件实现 Log.e("夹角", "angle"+angle); } } });
组件设置参数的方法:
/** 设置摇杆背景图 */ public void setRockerBg(Bitmap bitmap) { rocker_bg = Bitmap.createScaledBitmap(bitmap, mWheelRadius * 2, mWheelRadius * 2, true); } /** 设置摇杆图片 */ public void setRockerCtrl(Bitmap bitmap) { rocker_ctrl = Bitmap.createScaledBitmap(bitmap, mRudderRadius * 2, mRudderRadius * 2, true); } /** 设置摇杆活动半径 */ public void setmWheelRadius(int radius) { mWheelRadius = DensityUtil.dip2px((ContextThemeWrapper) context, radius); } /** 设置摇杆半径 */ public void setmRudderRadius(int radius) { mRudderRadius = DensityUtil.dip2px((ContextThemeWrapper) context, radius); }
ps:摇杆位置默认处于surfaceView的中心,故这里没有提供设置摇杆位置的方法。
参考的文章: android 虚拟摇杆图片版
作者微博: @安卓攻城师sloop
获取代码:Rocker
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories