Android 自定义 UI-----跟随手指滑动的小球

本文通过自定义android view,实现跟随手指滑动的小球小游戏

需要自定义用户界面,一般是通过继承 View 抽象类,重写onDraw(Canvas canvas)方法。

小游戏,通过实现监听用户手机触摸事件,获取当前用户手指在屏幕中位置,然后实时更改 自定义界面中 X 和 Y值,并调用界面中invalidate()方法,不断回调onDraw方法,

在onDraw方法中画一个圆。

public class MyView extends View {


public float currentX = 50;
public float currentY = 50;

public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//创建画笔
Paint paint = new Paint();
paint.setColor(Color.GREEN);
canvas.drawCircle(currentX, currentY, 50, paint);
}

}

上面即为自定义界面,界面会根据成员变量x,y,画出一个半径为50的圆。

在主Activity中,定义上面界面元素为成员: MyView view  = null;在onCreate方法中 实例化该用户界面元素,并添加到布局文件中定义的LinearLayout布局当中。

  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
        view = new MyView(this);
        layout.addView(view);
    }

当用户触摸手机屏幕时,系统会通过回调onTouchEvent方法实现对用户触摸事件的监听,所以需要重写Activity中onTouchEvent方法,

@Override
public boolean onTouchEvent(MotionEvent event) {
view.currentX = event.getX();
view.currentY = event.getY();
//重新绘制
view.invalidate();
return true;
}

在方法体中,获取当前用户触摸的X,Y位置,并改变view中值,调用View 的 invalidate(),来回调onDraw()方法,更新界面,达到小球跟随手指运动的效果。



你可能感兴趣的:(android)