android 自定义View--漂亮的倒计时功能CountDownView

最近在mooc网上看了一个课程---网页前端html5中的利用canvas机制制作出了一个灿烂的倒计时效果,一时兴起仿着在android上也做了一个类似效果的自定义View  ,因为只是出于兴趣,没有考虑到实际需求中的接口,这个只能算是一半成品,仅仅实现了倒计时的效果,各位可自行根据需求编写合适的接口,效果图在最后: 下面是几个关键的部分: 数字的绘制采用的是常规的01矩阵,倒计时功能是通过内部一个自定义的Updatethread实现的 重载OnMeaSure方法,初始化一些绘制用的数据
@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		super.onMeasure(widthMeasureSpec, heightMeasureSpec);

		WINDOW_WIDTH = MeasureSpec.getSize(widthMeasureSpec);
		WINDOW_HEIGHT = MeasureSpec.getSize(heightMeasureSpec);

		MARGIN_LEFT = WINDOW_WIDTH / 10;
		MARGIN_TOP = WINDOW_HEIGHT / 5;

		RADIUS = WINDOW_WIDTH * 4 / 5 / 108 - 1;

		Log.i(tag, "Width + Height " + WINDOW_WIDTH + "  " + WINDOW_HEIGHT);

	}
   
 彩色小球的运动模拟的是自由上抛运动,更新小球位置的方法
public void updateBallPosition() {
          for(int i =0;i<balls.size();i++){
        	  balls.get(i).x += balls.get(i).vx;
        	  balls.get(i).y += balls.get(i).vy;
        	  balls.get(i).vy += balls.get(i).g;
        	  if(balls.get(i).y >= WINDOW_HEIGHT - RADIUS){
        		  balls.get(i).y = WINDOW_HEIGHT -RADIUS;
        		  balls.get(i).vy = (int) (- balls.get(i).vy * u);
        	  }
          }
          
          //性能优化
          int count = 0;
          for(int i=0;i<balls.size();i++){
        	  if(balls.get(i).x+RADIUS >0 && balls.get(i).x - RADIUS < WINDOW_WIDTH){
        		  balls.set(count++, balls.get(i));
        	  }
          }
          for(int j = count;j<balls.size();j++ ){
        	  balls.remove(j);
          }
          //具体ArrayList大小与特定绘图区域大小相关
//        Log.i(tag, balls.size()+"");  
	}


































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值