是的,我們今天所要講的就是 : Message
藉由 Message 物件裡的所提供的方法,來達到我們想要知道的訊息
紅色字體是 Message 的用法
!!! 必須要新的 Message 才能只送出一筆,不然會造成 Exception
1 . 將參數放入容器內
Message message = new Message();
message.arg1 = i;
handler.sendMessage(message);
2 . 若handleMessage有接收到您發送的值
public void handleMessage(Message msg) {
//msg.arg1 = i; <---------您所Send的參數
}
以下是程式範例 :
紅色字體是 Message 的用法
!!! 必須要新的 Message 才能只送出一筆,不然會造成 Exception
1 . 將參數放入容器內
Message message = new Message();
message.arg1 = i;
handler.sendMessage(message);
2 . 若handleMessage有接收到您發送的值
public void handleMessage(Message msg) {
//msg.arg1 = i; <---------您所Send的參數
}
以下是程式範例 :
import java.util.concurrent.atomic.AtomicBoolean;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MainActivity extends Activity {
private ProgressBar bar;
private TextView textView;
AtomicBoolean isRunning=new AtomicBoolean(false);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar = (ProgressBar)findViewById(R.id.progress);
textView = (TextView) findViewById(R.id.textView1);
bar.setProgress(0);
Thread background=new Thread(new Runnable() {
public void run() {
try {
for (int i=0;i<20 && isRunning.get();i++) {
Thread.sleep(1000);
Message message = new Message();
message.arg1 = i;
handler.sendMessage(message);
}
}catch (Throwable throwable) {
}
}
});
isRunning.set(true);
background.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
isRunning.set(false);
}
Handler handler=new Handler() {
@Override
public void handleMessage(Message msg) {
bar.incrementProgressBy(5);
textView.setText(""+(msg.arg1==0 ? 1 : msg.arg1+1 )*5+" %");
}
};
}
以下是XML :<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context="com.example.handlermessage.MainActivity" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="下載進度條" />
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:secondaryProgress="75" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:text="0 %" />
</LinearLayout>
沒有留言:
張貼留言