Andriod小程序——简单制作游戏中控制人物移动的轮盘
说明
近期有在做一个项目,项目的其中一个要求就是,做一个控制设备上下左右的轮盘。网上找了好多都是猜奖转盘,本菜鸟表示心情十分复杂。于是在花费了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();
}
但是这个肯定不是我们需要的效果。
所以说肯定是要动态刷新的。我们整理一下思路。