我做的是类似淘宝的那个广告条,需要每3秒钟变个图片,我有2个想法一个是写个线程发消息,还有个就是android自带的计时器组建,但是都被难倒了,1.线程的话,我想在手按下屏幕后让计时器重归0,手抬起时重新开始,我用的Timer,好像不好控制,如何归0,再重新开始。2.Chronometer,系统的组建提供的方法比较齐全,但是因为我的类里没有布局,所以Chronometer直接是new出来的,没有用findViewByID();计时也存在问题,  本人java基础不是很好,望大虾指点下timer用法,有类似这样Chronometer例子的给我传个,或指点下(没有XML布局),先谢谢了

解决方案 »

  1.   

    用handler控制不好吗?通过延时发送或者handler启动一个线程的方法来控制3秒换一张图片,也很好控制的啊。
      

  2.   

    这个用timer和handler都可以实现,逻辑上都很简单。
    1、timer。new一个Timer,new一个TimerTask。TimerTask执行你要做的操作,Timer负责调度TimerTask。在按下屏幕时调用Timer的schedule方法,这个方法有几种模式,其中有一个时延迟执行Task,参数就是你设置的3秒。在手抬起时调用Timer和TimerTask的cancel方法取消定时器和任务。ok了
    2、handler。按下屏幕时清空消息队列,手抬起时延时3秒发送一个消息。在 handleMessage里面处理你的操作。over
      

  3.   

    我都习惯用handler
    Handler mHandler=new Handler(){
    public void handleMessage(Message msg) {
                             判断信息
                             处理
                             mHandler.postDelayed(mHandler,3000);//3000Ms发送一次
    }
    };
      

  4.   

    自动换图片我已经实现了,就是想手放点上去后,让timer归0,手抬起后重新开始计时,不然我在滑动的时候,刚好也发消息了,图片连着会滑2次,效果很不好
      

  5.   

    这种方法我试过,如果重复点的话会报错,有没有个方法可以让timer重新开始计时,而不执行cancel方法
      

  6.   

    自动换图片我已经实现了,就是想手放点上去后,让timer归0,手抬起后重新开始计时,不然我在滑动的时候,刚好也发消息了,图片连着会滑2次,效果很不好
      

  7.   


    什么意思?timer归0是想让图保持不变?滑动时也要保持0?
      

  8.   

    搞了半天是逻辑的问题啊1、down的时候停timer
    2、up的时候再启动计时用handler就行,简单有效。
      

  9.   

    两个事件嘛:
    当keydown 调用stop()
    当keyup   调用restart()
      

  10.   

    问题是没有线程和timer都没有restart()方法
      

  11.   

    handler不就是另一个线程么
    “mHandler.postDelayed(xxx,3000); ”三秒钟后回调一次不就是timer么还要求什么?