一般切換頁面,通過Intent,startActivity可以實現,但系統建立Activity是非常耗時的,如果對切換畫面時間有要求,只能用setContentView在同一activity下切換頁面,這樣做切換快,但會增加程式邏輯控制的難度。在工業產品中,任何一個參數都是參與競爭的籌碼,開機時間、畫面切換時間等都是重要衡量因素。一般切換頁面的時間在150ms以上,使用者就會有反應,也就是說眼睛可以分辨,要等一小下才能看到跳轉的頁面。
下面上一個android開發,用setContentView來切換頁面的例子,主要是程式部分,布局部分很簡單,每個布局裡都只有個按鈕,分別是“切換”和“返回”,在手機上測試,最短切換耗時2ms,穩定在6-8ms之間。
package com.example.learntest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
long time = (long)0.0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_mainActivity = (Button)findViewById(R.id.btn_mainAc_1);
btn_mainActivity.setOnClickListener(new ButtonListen());
}
class ButtonListen implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
time = System.currentTimeMillis();
switch(v.getId()){
case R.id.btn_mainAc_1:
Jump2Second();
break;
case R.id.btn_secondA_1:
Jump2Main();
break;
default:
break;
}
}
} //按鈕監聽部分,為了方便閱讀和管理,我寫到一個類裡面,用case判斷。建議類似環境都這麼搞!
public void Jump2Second(){
setContentView(R.layout.activity_second);
long currTime = System.currentTimeMillis();
Toast.makeText(MainActivity.this,
"切換耗時:" +String.valueOf(currTime-time)+"毫秒",
Toast.LENGTH_SHORT).show();
Button btn_secondActivity = (Button)findViewById(R.id.btn_secondA_1);
btn_secondActivity.setOnClickListener(new ButtonListen());
} //跳轉到第二個頁面方法實現
public void Jump2Main(){
setContentView(R.layout.activity_main);
long currTime = System.currentTimeMillis();
Toast.makeText(MainActivity.this,
"切換耗時:" +String.valueOf(currTime-time)+"毫秒",
Toast.LENGTH_SHORT).show();
Button btn_mainActivity = (Button)findViewById(R.id.btn_mainAc_1);
btn_mainActivity.setOnClickListener(new ButtonListen());
}
} //返回到第一個頁面方法實現
至此,總結下,主要分為四部分:
1,onCreate方法裡,要設定監聽,進入後續的監聽迴圈
2,監聽方法實現,判斷是來自哪個按鈕,每個按鈕的R.id....都是唯一固定的
3,Jump2Second方法的實現,這裡首先將版面設定成第二個layout,然後要再次findViewById一下
Button btn_secondActivity = (Button)findViewById(R.id.btn_secondA_1);
btn_secondActivity.setOnClickListener(new ButtonListen());
再次設定監聽。
這一點我也比較鬱悶,跳轉過後,都要find一下。如果把這兩個button設定成全域變數,還是不中!設定成static變數也不中,跳轉頁面後,一定要再次findViewById一下,設定監聽,才能保證程式正常的邏輯。這塊有更方便的方法嗎???知道如何解決的大神 指點一下後輩。。。。。。。。
4,Jump2Main的實現與之類似。不重複。
源碼下載:http://download.csdn.net/detail/yanzi1225627/4464499