1 .MainActivity.java |
package com.example.acer.myapplication; |
import android.app.ProgressDialog; |
import android.os.Handler; |
import android.os.Message; |
import android.support.v7.app.AppCompatActivity; |
import android.os.Bundle; |
import android.view.View; |
import android.widget.Button; |
import android.widget.TextView; |
public class MainActivity extends AppCompatActivity { |
private TextView statusTextView; |
private Button beginBtn; |
private ProgressDialog progressDialog; |
@Override |
public void onCreate(Bundle savedInstanceState) { |
super .onCreate(savedInstanceState); |
setContentView(R.layout.activity_main); |
statusTextView = (TextView)findViewById(R.id.status); |
beginBtn = (Button)findViewById(R.id.beginBtn); |
} |
//更新UI |
private Handler handler = new Handler(){ |
@Override |
public void handleMessage(Message msg) { |
//关闭ProgressDialog |
progressDialog.dismiss(); |
//更新UI |
statusTextView.setText( "完成!" ); |
}}; |
|
public void onClick(View v) { |
//显示ProgressDialog |
progressDialog = ProgressDialog.show(MainActivity. this , "Loading..." , "Please wait..." , true , false ); |
//新建线程 |
new Thread(){ |
public void run() { |
//需要花时间计算的方法 |
Calculation.calculate( 4 ); |
//向handler发消息 |
handler.sendEmptyMessage( 0 ); |
}}.start(); |
} |
} |
2 .activity_main.xml |
<?xml version= "1.0" encoding= "utf-8" ?> |
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" |
android:orientation= "vertical" |
android:layout_width= "fill_parent" |
android:layout_height= "fill_parent" |
> |
<TextView android:id= "@+id/status" |
android:layout_width= "fill_parent" |
android:layout_height= "wrap_content" |
android:text= "hello" |
/> |
<Button android:id= "@+id/beginBtn" |
android:layout_width= "fill_parent" |
android:layout_height= "wrap_content" |
android:text= "begin" |
android:onClick= "onClick" /> |
</LinearLayout> |
3 .Calculation.java |
package com.example.acer.myapplication; |
public class Calculation { |
public static void calculate( int sleepSeconds){ |
try { |
Thread.sleep(sleepSeconds * 1000 ); |
} catch (Exception e) { |
// TODO: handle exception |
} |
} |
} |