那就是自己画的进度吧,不是用系统的progressbar。
自己定义一个view,然后设置宽高,ondraw里去根据进度绘制。bitmap可以指定绘制的区域。起个handler一点一点绘制出来就可以了

解决方案 »

  1.   

    http://download.csdn.net/source/2695755
      

  2.   

    http://download.csdn.net/source/2626708
      

  3.   

    这中特殊的要求只能是自己自定义的View。关于自定义View的方法,去网上查查,有很多的。。
      

  4.   

    package mars.ProgressBarTest;import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.View;
    import android.view.Window;
    import android.widget.Button;
    import android.widget.ProgressBar;public class ProgressBarTest extends Activity 
    {
        /** Called when the activity is first created. */
    private ProgressBar  m_ProgressBar;
    private ProgressBar  m_ProgressBar2;
    private Button  mButton01;
    protected static final int GUI_STOP_NOTOFIER = 0x108;
    protected static final int GUI_THREADING_NOTOFIER = 0x109;
    public int intCounter = 0;
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
         super.onCreate(savedInstanceState);
         //设置窗口模式,因为需要显示进度条在标题栏
         requestWindowFeature(Window.FEATURE_PROGRESS);
         setProgressBarVisibility(true);
            setContentView(R.layout.main);
            //取得ProgressBar
            m_ProgressBar = (ProgressBar)findViewById(R.id.ProgressBar01);
            m_ProgressBar2 = (ProgressBar)findViewById(R.id.ProgressBar02);
            mButton01 = (Button)findViewById(R.id.myButton);
            
            m_ProgressBar.setIndeterminate(false);
            m_ProgressBar2.setIndeterminate(false);
            //当按钮按下时开始执行
            mButton01.setOnClickListener(new Button.OnClickListener()
            {
    @Override
    public void onClick(View v)
    {
    // TODO Auto-generated method stub
    //设置ProgressBar为可见状态
    m_ProgressBar.setVisibility(View.VISIBLE);
    m_ProgressBar2.setVisibility(View.VISIBLE);
    //设置ProgressBar的最大值
    m_ProgressBar.setProgress(0);
    m_ProgressBar2.setProgress(0);
    //通过线程来改变ProgressBar的值
    new Thread(new Runnable()
    {
    public void run()
    {
    for(int i =0; i < 10; i++)
    {
    try
    {
    intCounter = (i + 1)*20;
    Thread.sleep(1000);
    if(i == 4)
    {
    Message m = new Message();
    m.what = ProgressBarTest.GUI_STOP_NOTOFIER;
    ProgressBarTest.this.MyMessageHandler.sendMessage(m);
    break;
    }
    else
    {
    Message m = new Message();
    m.what = ProgressBarTest.GUI_THREADING_NOTOFIER;
    ProgressBarTest.this.MyMessageHandler.sendMessage(m);
    }
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    }
    } ).start();
    }
            });
        }
        Handler MyMessageHandler = new Handler()
        {
         public void handleMessage (Message msg)
         {
         switch (msg.what)
         {
         //ProgressageBar已经是最大值
         case ProgressBarTest.GUI_STOP_NOTOFIER:
         m_ProgressBar.setVisibility(View.GONE);
         m_ProgressBar2.setVisibility(View.GONE);
         Thread.currentThread().interrupt();
         break;
         case ProgressBarTest.GUI_THREADING_NOTOFIER:
         if(!Thread.currentThread().isInterrupted())
         {
         m_ProgressBar.setProgress(intCounter);
         m_ProgressBar2.setProgress(intCounter);
         setProgress(intCounter*100);
         setSecondaryProgress(intCounter*100);
         }
         break;
         }
         super.handleMessage(msg);
         }
        };
    }有些东西自己写。