progressbar-使用安卓progressBar进度条实现秒表计时

问题描述

使用安卓progressBar进度条实现秒表计时

如题,点击即使按钮后线程启动,但是界面上的TextView与PorgressBar并不显示
package com.example.progressbartime;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

private Button start,stop;
private ProgressBar hbar,mbar,sbar,csbar;
private TextView htv,mtv,stv,cstv;
private Thread mThread;
private Handler mHandler;
private int hour=0,minute=0,second=0,cssecond=0;
private int STOP=0;
private final static int MSG=1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    hbar=(ProgressBar) findViewById(R.id.hourBar);
    sbar=(ProgressBar) findViewById(R.id.secondBar);
    mbar=(ProgressBar) findViewById(R.id.minuteBar);
    csbar=(ProgressBar) findViewById(R.id.CSecondBar);
    htv=(TextView) findViewById(R.id.hourText);
    mtv=(TextView) findViewById(R.id.minuteTV);
    stv=(TextView) findViewById(R.id.secondTV);
    cstv=(TextView) findViewById(R.id.CSecondTV);
    start=(Button) findViewById(R.id.startBtn);
    stop=(Button) findViewById(R.id.stopBtn);
    start.setOnClickListener(new startBtnClick());
    stop.setOnClickListener(new stopBtnClick());
    //设置进度条的最大值以及当前进度
    hbar.setMax(1000);
    //hbar.setProgress(0);
    mbar.setMax(60);
    //mbar.setProgress(0);
    sbar.setMax(60);
    //sbar.setProgress(0);
    csbar.setMax(100);
    //csbar.setProgress(0);
    mThread=new mThread();
    mHandler=new mHandler();

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }
}

public class startBtnClick implements OnClickListener {

    @Override
    public void onClick(View arg0) {
        STOP=1;
        mThread.start();

    }

}

public class stopBtnClick implements OnClickListener {

    @Override
    public void onClick(View arg0) {
        STOP=0;

    }

}

public class mHandler extends Handler {

    @Override
    public void handleMessage(Message msg) {
        switch(msg.what){
        case MSG:{
            int csecond=((Integer) msg.obj)%101;
            if(csecond==100){
                second++;
                csecond=0;
            }
            if(second==60){
                minute++;
                second=0;
            }
            if(minute==60){
                hour++;
                minute=0;
            }
            hbar.setProgress(hour);
            mbar.setProgress(minute);
            sbar.setProgress(second);
            csbar.setProgress(csecond);
            String h=Integer.toString(hour)+"h";
            String m=Integer.toString(minute)+"m";
            String s=Integer.toString(second)+"s";
            String mm=Integer.toString(csecond)+"mm";
            htv.setText(h);
            mtv.setText(m);
            stv.setText(s);
            cstv.setText(mm);
            break;
        }
        }
    }

}

public class mThread extends Thread {

    @Override
    public void run() {
        while(STOP==1){
        try {
            Thread.sleep(10);
            cssecond++;
            Message message=new Message();
            mHandler.obtainMessage(MSG,cssecond).sendToTarget();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
    }
}

}

解决方案

hbar=(ProgressBar) findViewById(R.id.hourBar);
看看进度条找到没有

解决方案二:

hbar=(ProgressBar) findViewById(R.id.hourBar);
看看进度条找到没有

时间: 2024-09-19 09:35:35

progressbar-使用安卓progressBar进度条实现秒表计时的相关文章

安卓监控进度条怎么实现

问题描述 安卓监控进度条怎么实现 就像这张图片里的一样,红色指针始终在中间,左右拖动后面背景会动,这个该怎么实现,还有我想同时播放4个画面该怎么实现,求大神解答

android ListView和ProgressBar(进度条控件)的使用方法_Android

ListView控件的使用:ListView控件里面装的是一行一行的数据,一行中可能有多列,选中一行,则该行的几列都被选中,同时可以触发一个事件,这种控件在平时还是用得很多的.使用ListView时主要是要设置一个适配器,适配器主要是用来放置一些数据.使用起来稍微有些复杂,这里用的是android自带的SimpleAdapter,形式如下:android.widget.SimpleAdapter.SimpleAdapter(Context context, List<? extends Map<

Android零基础入门第51节:进度条ProgressBar

原文:Android零基础入门第51节:进度条ProgressBar    不知不觉这已经是第51期了,在前面50期我们学了Android开发中使用频率非常高的一些UI组件,当然这些组件还不足够完成所有APP的开发,还会经常用到一些诸如进度条.拖动条.搜索框.时间和日期选择器等组件,那么后面几期就来一起学习这些高级组件.     一.ProgressBar系列组件       ProgressBar也是一组重要的组件,ProgressBar本身代表了进度条组件,它还派生了两个常用的组件:Seek

Android学习笔记(24):进度条组件ProgressBar及其子类

ProgressBar作为进度条组件使用,它还派生了SeekBar(拖动条)和RatingBar(星级评分条).   ProgressBar支持的XML属性: Attribute Name Related Method Description style   设置ProgressBar指定风格 android:indeterminate   设置为true时,进度条不显示进度 android:indeterminateBehavior   indeterminate模式下,当进度条达到最大值时的

android ListView和ProgressBar(进度条控件)的使用方法

ListView控件的使用:ListView控件里面装的是一行一行的数据,一行中可能有多列,选中一行,则该行的几列都被选中,同时可以触发一个事件,这种控件在平时还是用得很多的.使用ListView时主要是要设置一个适配器,适配器主要是用来放置一些数据.使用起来稍微有些复杂,这里用的是android自带的SimpleAdapter,形式如下:android.widget.SimpleAdapter.SimpleAdapter(Context context, List<? extends Map<

进度条ProgressBar及ProgressDialog(实例)

废话不多说,直接上代码 Main代码 package processdemo.example.administrator.processbardemo; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AppCompatActivi

Android中自定义水平进度条样式之黑色虚线_Android

以下内容给大家介绍Android中自定义水平进度条样式之黑色虚线,对代码实现方法感兴趣的朋友一起学习吧. 布局layout中使用: <ProgressBar android:id="@+id/progress_bar" style="?android:attr/progressBarStyleHorizontal" <!--必须设置为水平--> android:progressDrawable="@drawable/myprogress&

Android自定义圆形倒计时进度条_Android

效果预览 源代码传送门:https://github.com/yanzhenjie/CircleTextProgressbar 实现与原理 这个文字圆形的进度条我们在很多APP中看到过,比如APP欢迎页倒计时,下载文件倒计时等. 分析下原理,可能有的同学一看到这个自定义View就慌了,这个是不是要继承View啊,是不是要绘制啊之类的,答案是:是的.但是我们也不要担心,实现这个效果实在是so easy.下面就跟我一起来看看核心分析和代码吧. 原理分析 首先我们观察上图,需要几个部分组成: 1. 外

jquery Bootstrap组件实现进度条示例代码

Bootstrap组件 .progress--指定div包裹进度条组件: .progress-bar--设置div为进度条样式: .progress-bar-info..progress-bar-warning..progress-bar-success..progress-bar-danger--设置进度条的情境效果: .pregress-bar-striped--设置进度条具有条纹效果: .active--可设置进度条的条纹处于动画状态: 属性aria-valuemin--设置进度条的最小值