线程 Thread 是 Java 和 Android 的一个重要概念,这里我们先撇开一些概念性的东西,用代码来看看如何使用线程。
还是接前面的例子,我们在 PaintingActivity 里面做一个按钮,点击按钮开启一个线程去加载下一幅的图片,目前我们就不做加载图片,取而代之的是,我们就弄一个进度条吧。
PaintingActivity :
private Button btn_next; private ProgressBar pgb; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.painting); btn_next = (Button)findViewById(R.id.btn_loadnext); pgb = (ProgressBar)findViewById(R.id.loading_progress); btn_next.setOnClickListener(new ButtonListener()); } class ButtonListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub if( v.getId() == R.id.btn_loadnext){ //startActivity(intent); Thread t = new LoadPicThread(); t.start(); } } } class LoadPicThread extends Thread{ public void run(){ for(int i = 0; i <= 100; i++){ try { Thread.sleep(20); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } pgb.setProgress(pgb.getProgress() + 1); } } }
painting.xml
<ProgressBar android:id="@+id/loading_progress" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" /> <Button android:id="@+id/btn_loadnext" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/loading_progress" android:text="NextPic" />
代码写得很简单直观,这里就不多解释了,程序运行结果:
现代魔法 推荐于 2013-02-27 10:23