Andriod小程序——简单制作游戏中控制任务移动的轮盘

本文介绍如何在Android中制作一个用于控制任务移动的圆形轮盘。通过自定义View,重写onDraw()和onTouch()方法,实现手指滑动时动态更新轮盘位置。文中提供了解决内圆切割和主程序调用问题的方法,并附有完整代码示例。
摘要由CSDN通过智能技术生成

说明

近期有在做一个项目,项目的其中一个要求就是,做一个控制设备上下左右的轮盘。网上找了好多都是猜奖转盘,本菜鸟表示心情十分复杂。于是在花费了19个小时之后,本菜鸡才简单制作了一个 成型,话不多说,先上图
就大约这样了
上面出现的两个数,是移动的参数,一会儿我会说明。
这个效果实现起来相当简单 文末含有整个类只要有一点android基础,一看就懂,下面一步步解释。

自定义自己的view继承于View类

一般都是继承于View类,看自己的需求。
当然也可以继承于SurfaceView,但是这里,不会一直刷新,我认为没必要。

public class DiscView extends View {
   
	//有人可能不懂三个构造方法的意思,我解释一下

	//在主程序中new的时候调用这个
	//DiscView disc = new DiscView(this);
	public DiscView(Context context) {
   
        this(context,null);
    }

	//在xml文件中创建控件是调用这个
    public DiscView(Context context,AttributeSet attrs) {
   
        this(context, attrs, 0 );
    }

	//在xml文件中创建控件,指定style属性的时候会使用这个方法,否则默认第二种
    public DiscView(Context context, AttributeSet attrs, int defStyleAttr) {
   
        super(context, attrs, defStyleAttr);
        manager = LocalBroadcastManager.getInstance(context);
    }
}

重写onDraw()方法

这里是 重点,整个控件的核心 要一步步来。

当我们看到这个控件的时候那个样子,如图

最原始的样子

    @Override
    protected void onDraw(Canvas canvas) {
   
        super.onDraw(canvas);
        canvas.drawColor(Color.TRANSPARENT);

        //设置背景图的半径
        radiusBack = getWidth() / 2;
        //设置小圆点的半径
        radiusPre = getWidth() / 4;
        //圆心
        circleX = getWidth() / 2;
        circleY = getHeight() / 2;

        if (paint == null) {
   
            paint = new Paint();
        }
        //设置画笔的基本属性
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(0x7f111111);
        //画出内圆
        canvas.drawCircle(circleX,circleY,(float) radiusBack,paint);
        //画出外圆,内外圆颜色不一样,所以要用不同的颜色
        paint.setColor(0xFF744041);
        canvas.drawCircle(btnX,btnY,(float) radiusPre,paint);
        canvas.save();
    }

但是这个肯定不是我们需要的效果。
所以说肯定是要动态刷新的。我们整理一下思路。

手指点击或移动要刷新内部圆
手指离开屏幕
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值