Handler结合progressBar使用方法:及测试通过。。。显示效果如下:
1、main.xml中配置如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/b1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="60px"
/>
<Button
android:id="@+id/b2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="100px"
/>
<ProgressBar
android:id="@+id/pro"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginTop="20px"
style="?android:attr/progressBarStyleHorizontal"
/>
</RelativeLayout>
2、java代码:
public class MainActivity extends Activity {private Button b1 = null;
private Button b2 = null;
private ProgressBar pro;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button)findViewById(R.id.b1);
b1.setOnClickListener(new startOnClickListener());
pro = (ProgressBar)findViewById(R.id.pro);
pro.setMax(100);
b2 = (Button)findViewById(R.id.b2);
b2.setOnClickListener(new endOnClickListener());
b1.setText("开始线程");
b2.setText("结束线程");
}
class startOnClickListener implements OnClickListener {
@Override
public void onClick(View arg0) {
pro.setVisibility(View.VISIBLE);
handler.post(updateThread);
Log.d("myTag","执行start");
Toast.makeText(getApplicationContext(), "执行start", Toast.LENGTH_SHORT).show();
}
}
class endOnClickListener implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
handler.removeCallbacks(updateThread);
Toast.makeText(getApplicationContext(), "结束start", Toast.LENGTH_LONG).show();
}
}
Handler handler = new Handler() {
public void handleMessage(Message msg) {
pro.setProgress(msg.arg1);
handler.post(updateThread);
}
};
Runnable updateThread = new Runnable() {
int i = 0;
@Override
public void run() {
Toast.makeText(getApplicationContext(), "执行线程一次", Toast.LENGTH_SHORT).show();
//handler.postDelayed(updateThread, 3000);
i+=10;
Message msg = handler.obtainMessage();
msg.arg1 = i;
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.sendMessage(msg);
if(i==100) {
handler.removeCallbacks(updateThread);
Toast.makeText(getApplicationContext(), "结束线程,i=100", Toast.LENGTH_SHORT).show();
}
}
};
}