如何讓Class View跟一般class Thread一模一樣,當要使用Canvas一定要繼承View才能作畫,就沒法繼承Thread,因為java只能單一繼承
若要View能有Thead功能,只能實作Runnable,但是class實作Runnable是沒有像Thread有start()函式,那要test_vew開始執行續要這樣,
要如下面這要,每次都要new Thread,我覺的這樣太麻煩
//實例化test_view
test_view mtest_view=new test_view(.....);
//mtest_view新的Thread才能start(),
new Thread(mtest_view).start();
Example 1:
public class test_view extends View implements Runnable{
@Override
public void run(){
while(true){
this.update();//update view產生動畫
}
}
@Override
protected void onDraw(Canvas canvas) {
//處理canvas
}
}
我想到一個方法,在test_view 加一個start()函式,寫入new Thread(this).start(),那要test_vew開始執行續就跟Class Thread一模一樣
//實例化test_view
test_view mtest_view=new test_view(.....);
//開始Thread
mtest_view.start();
Example 2:
public class test_view extends View implements Runnable{
public void start(){
new Thread(this).start();
}
@Override
public void run(){
while(true){
this.update();//update view產生動畫
}
}
@Override
protected void onDraw(Canvas canvas) {
//處理canvas
}
}
若要實例化就開始Thread,建構子加入this.start(),這樣在實例化就會開始Thread了
//實例化test_view且開始Thread
test_view mtest_view=new test_view(.....);
Example 3:
public class test_view extends View implements Runnable{
public test_view(Context t){
super(t)
this.start();
}
public void start(){
new Thread(this).start();
}
@Override
public void run(){
while(true){
this.update();//update view產生動畫
}
}
@Override
protected void onDraw(Canvas canvas) {
//處理canvas
}
}
這樣extends View implements Runnable對用view來作動畫或遊戲就很方便,一個view就是一個Thread,每各View就有個別的生命,可產生不同行為
2017年4月29日 星期六
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言