您的位置:首页 > 移动开发 > Android开发

android sdk----processBar的使用

2014-08-20 10:41 381 查看
需求:

点击按钮,进度环旋转并显示进度信息,结束之后隐藏进度环

代码:

    private TextView mTextView1;

    private Button mButton;

    private ProgressBar mProcessBar;

    public int counter = 0;

   

    protected static final int STOP_NOTIFIER = 0x108;

    protected static final int THREADING_NOTIFIER = 0x109;

   

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

       

        mButton = (Button)findViewById(R.id.button1);

        mTextView1 = (TextView)findViewById(R.id.textView1);

        mProcessBar = (ProgressBar)findViewById(R.id.progressBar1);

       

        mProcessBar.setIndeterminate(false);
       

        mButton.setOnClickListener(new Button.OnClickListener()

        {

   @Override

   public void onClick(View arg0) {

    // TODO Auto-generated method stub

    mTextView1.setText("thread starting");

    mProcessBar.setVisibility(View.VISIBLE);

    

    mProcessBar.setMax(100);

    mProcessBar.setProgress(0);
    

    new Thread(new Runnable()

    {

     @Override

     public void run() {

      // TODO Auto-generated method stub

      for(int i = 0; i < 10; i++)

      {

       try

       {

        counter = (i+1)*20;

        Thread.sleep(1000);

        

        if(i == 4)

        {

         Message m = new Message();

         m.what = MainActivity.STOP_NOTIFIER;

         MainActivity.this.myMessageHandler.sendMessage(m);

         break;

        }

        else

        {

         Message m = new Message();

         m.what = MainActivity.THREADING_NOTIFIER;

         MainActivity.this.myMessageHandler.sendMessage(m);

        }

       }

       catch(Exception e)

       {

        e.printStackTrace();

       }

      }

     }

     

    }).start();
   }

         

        });

    }

    Handler myMessageHandler = new Handler()

    {

     public void handleMessage(Message msg)

     {

      switch(msg.what)

      {

       case MainActivity.STOP_NOTIFIER:

        mTextView1.setText("thread is over");

        mProcessBar.setVisibility(View.GONE);

        Thread.currentThread().interrupt();/*what's this for*/

        break;

       case MainActivity.THREADING_NOTIFIER:

        mProcessBar.setProgress(counter);

        mTextView1.setText(

          (Integer.toString(counter)+"%\n process:"+

            Integer.toString(mProcessBar.getProgress())));

          break;

      }

      super.handleMessage(msg);

     }

    };

 

重点:

1.Handle属于MainActivity类

2.Handle和Message可以在线程间传递msg;

3.Handle可发送sendMessage,处理handleMessage

4.message的信息放在what里面

5.progressBar的操作主要是setVisibility,setProgress,getProgress,setIndeterminate

6.本例展示了如何新建一个线程;

问题:

1。 Thread.currentThread().interrupt();这个表示撤销线程吗?

2。放在OnCreate里面和放在class里面有什么区别?

3。新建的线程可共用类的什么信息?

4.indeterminateOnly对于progressBar的显示有何影响?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息