码迷,mamicode.com
首页 > 其他好文 > 详细

自定义View之大风车系列demo(二)

时间:2015-05-02 12:30:46      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:android   ontouchevent   matirx   

版本1.0和版本2.0的风车有个不尽人意的效果:当手指抬起的时候风车就会停止转动,现在版本3要做的就是让手指抬起的时候让风车继续转动一段时间,思路如下:

1)手指抬起的时候继续让风车转动5秒

2)需要监听MotionEvent.ACTION_UP事件并记录手指抬起的时间upTime

3)捕获MotionEvent.ACTION_UP事件并重绘五秒钟

根据上面的说明RotationView的代码做了如下的改变(在版本2的基础上主要修改了onTouchEvent事件:

        /**手指抬起的时间**/
      private long upTime = 0;
    /**手指抬起的时候风车持续转动的时间**/
    private final long stopTimeDuration = 5000;
        @Override
	public boolean onTouchEvent(MotionEvent event) {
		int action = event.getAction();
		switch (action) {
		case MotionEvent.ACTION_MOVE:// 随着手指的move而不断进行重绘
			//该方法在UI线程自身中使用
			postInvalidate();
			break;
		case MotionEvent.ACTION_UP:// 随着手指的move而不断进行重绘
			upTime = System.currentTimeMillis();
			post(new Runnable() {
				@Override
				public void run() {
					long duration = System.currentTimeMillis()-upTime;
					if(duration ==stopTimeDuration ) {
						return;
					}else if(duration<stopTimeDuration) {
						post(this);
					}
					//在非UI线程中使用。 
					invalidate();
				}
			});
			
			break;
		}	
		return true;
	}


当然这个版本的风车还是有问题:风车转动的速度是一致的,不会随着手指移动的快慢而变化,这个将在下一个版本解决,详见自定义View之大风车系列(三)




自定义View之大风车系列demo(二)

标签:android   ontouchevent   matirx   

原文地址:http://blog.csdn.net/chunqiuwei/article/details/45438625

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!