Android - JoystickView 虚拟手柄,控制盘,自定义UI

在一些手机游戏中,玩家可以通过虚拟控制盘来控制游戏角色的行动。 无人机和玩具操控App中也有这一类控制盘的应用。

用自定义View的方式来实现类似手柄的控件。

相关代码请见 github.com/RustFisher/…

JoystickView特性

目前JoystickView特性如下

  • 2种风格
    • 固定控制盘;
    • 浮动跟随模式;控制盘会移动到手指第一次点击的地方
  • 可以在背景上添加“箭头”,即添加效果图片
  • 自定义的“触摸球”图片和背景图片
  • 手指移出了控制盘范围,仍然能够保持追随
  • 能获取到移动位置的百分比参数

实现思路

用自定义View的方式实现这个控制盘。创建TouchView

控制盘的基本要求是跟随手指做出反应。为了获取到手指触屏的坐标,会用到View的onTouchEvent方法。

控件中的“触摸球”和背景由图片得来。在自定义view中先获取相应的bitmap,缩放成指定的尺寸。

onTouchEvent中获取到相应的坐标,计算出图片应该出现的位置;onDraw中根据坐标进行绘制。 计算出手指位置与控制盘中心的距离等信息,通过listener传递出去。

代码示例

样式设定

有固定和浮动这两种风格,未来可能还会添加

public enum PadStyle {
    FLOATING /* 随用户手指重新定位 */,
    FIXED    /* 固定位置 */
}
复制代码

控制盘配置

我们可以不直接操作TouchView,创建TouchViewModel存放相关的配置。

    private int bgResId;           // 背景图片资源ID
    private int touchBmpResId;     
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值