自定义view系列---小球滚动案例

最近读了 李赞红 的Android自定义组件开发详解,对自定义View和ViewGroup有了更深的理解,现将书中的案例及自己的理解整理出来,进一步加深理解并方便以后回顾,毕竟 好记性不如烂笔头。

先简单介绍下作者,李赞红,在湖南株洲从事IT教育行业,说实话,我刚开始看到这个介绍,还奇怪了,一个培训机构的老师,还能写书(为自己的偏见感到羞愧。。。),进一步了解发现,正是因为作者身在教育行业,才更能体会到程序员们困惑和需求,也更了解这个行业存在的问题,很多程序员工作一段时间后就遇到了职业瓶颈,涉及底层原理很难理解,最终成为无奈的代码搬运工。因此,作者本着发扬java社区一二十年来至死不渝的精神,写下这本书,而我就是这其中的受益者之一。

本篇实现一个小球滚动的效果。
小球就是我们要自定义的view,思路就是要在view的onDraw方法中绘制一个小球,然后通过固定的时间间隔来修改小球的 x 坐标

注意:要保证小球不能滚到屏幕外面去,需要判断小球滚动后 x 坐标是否超出屏幕 左边框 或 右边框

 @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Log.e("cyy","onDraw...");
        canvas.drawCircle(x,Y,RADIUS,paint);
        int width = getMeasuredWidth();

        if(x <= RADIUS){
            //向右滚动
            direction = true;
        }

        if(x >= width - RADIUS){
        	//向左滚动
            direction = false;
        }

        x = direction ? x + 5 : x - 5 ; //每绘制一次就将修改小球的 x 坐标

    }

现在小球滚动的逻辑有了,接下来就需要定时调用小球的onDraw方法,小球就能真正动起来了。
另起一个Activity文件,设置 开始滚动 和 结束滚动 的按钮来控制小球的滚动。

if(R.id.begin_scroll == id){
            //开始滚动
            if(mTimer == null){
                mTimer = new Timer();
            }
            mTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                    mBallMoveView.postInvalidate();
                }
            },2000,50);

}else if(R.id.stop_scroll == id){
    //停止滚动
    if(mTimer != null){
        mTimer.cancel();
        mTimer = null;
    }
}

DONE

此系列后续持续更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值