首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用reDraw启动天文台

用reDraw启动天文台
EN

Stack Overflow用户
提问于 2013-06-27 11:34:11
回答 1查看 369关注 0票数 0

嗨,我在一个android应用程序上工作,其中涉及重新绘制画布和启动计时器的同时。谁知道怎样才能做到这一点?

当调用invalidate()时,我尝试在View类中调用chronometer.start。但是,只有画布被重新绘制,计时器根本没有启动。

编辑:这是我尝试过的代码:

代码语言:javascript
复制
 public class ReDraw extends View{
     public ReDraw(Context context){
            super(context);
            this.selfPointer = this;
            setFocusable(true);
            chrono(context);
          }


          public void chrono(Context context){
              chrono = new Chronometer(context);

              chrono.setOnChronometerTickListener(new OnChronometerTickListener(){
                  public void onChronometerTick(Chronometer arg){

                       elapsedTime = (SystemClock.elapsedRealtime() - arg.getBase()) / 1000;
                      long milliseconds= (long) (elapsedTime/60);

                         String millisec=Long.toString(milliseconds);
                         arg.setText(millisec);
                  }
              });
              chrono.setBase(SystemClock.elapsedRealtime());
                   chrono.start();
               }


        }

     protected void onDraw(Canvas Square) 
          {
            super.onDraw(Square);
            Paint squareColor = new Paint();
                squareColor.setColor(Color.BLACK);
                Square.drawRect(200,100,200,100, squareColor); 
                return;
                }

            }

     public boolean onTouchEvent(MotionEvent event)
            {

                if (event.getAction() == MotionEvent.ACTION_DOWN)   
                {   
                    invalidate();
                }
                return;                         
            }
      }
EN

回答 1

Stack Overflow用户

发布于 2013-06-27 12:08:37

您的invalidate()方法将只调用onDraw()方法,而不是ReDraw的构造函数。这就是为什么只重画canvas的原因。

画完正方形后尝试使用chrono.start()

代码语言:javascript
复制
 Square.drawRect(200,100,200,100, squareColor); 
 chrono.start()

更新

尝尝这个

代码语言:javascript
复制
 public class ReDraw extends View{
     String currentTime="00:00:00";
     public ReDraw(Context context){
            super(context);
            this.selfPointer = this;
            setFocusable(true);
            chrono(context);
          }


          public void chrono(Context context){
              chrono = new Chronometer(context);

              chrono.setOnChronometerTickListener(new OnChronometerTickListener(){
                  public void onChronometerTick(Chronometer arg){
                       String HH =((elapsedTime / 3600) < 10 ? "0" : "") + (elapsedTime / 3600);
                       String MM =((elapsedTime / 60) < 10 ? "0" : "") + (elapsedTime / 60); 
                      String SS =((elapsedTime % 60) < 10 ? "0" : "") + (elapsedTime % 60);
                      currentTime = HH+":"+MM+":"+SS; 
                      elapsedTime = (SystemClock.elapsedRealtime() - arg.getBase()) / 1000;
                      arg.setText(currentTime);
                  }
              });
              chrono.setBase(SystemClock.elapsedRealtime());
                   chrono.start();
               }


        }

     protected void onDraw(Canvas Square) 
          {
            super.onDraw(Square);
            Paint squareColor = new Paint();
                squareColor.setColor(Color.BLACK);
                Square.drawRect(200,100,200,100, squareColor); 
                return;
                }

            }

     public boolean onTouchEvent(MotionEvent event)
     {

                if (event.getAction() == MotionEvent.ACTION_DOWN)   
                {   
                    chrono.start();
                }
                return true;                         
            }
      }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17334089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档