setContentView
一般切换页面,通过Intent,startActivity可以实现,但系统创建Activity是非常耗时的,如果对切换画面时间有要求,只能用setContentView在同一activity下切换页面,这样做切换快,但会增加程序逻辑控制的难度。在工业产品中,任何一个参数都是参与竞争的筹码,开机时间、画面切换时间等都是重要衡量因素。一般切换页面的时间在150ms以上,用户就会有反应,也就是说眼睛可以分辨,要等一小下才能看到跳转的页面。
Activity代码:
1 package com.example.learntest; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.Button; 8 import android.widget.Toast; 9 10 public class MainActivity extends Activity { 11 12 long time = (long)0.0; 13 public void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 17 Button btn_mainActivity = (Button)findViewById(R.id.btn_mainAc_1); 18 btn_mainActivity.setOnClickListener(new ButtonListen()); 19 } 20 21 22 class ButtonListen implements OnClickListener{ 23 public void onClick(View v) { 24 time = System.currentTimeMillis(); 25 switch(v.getId()){ 26 case R.id.btn_mainAc_1: 27 Jump2Second(); 28 break; 29 case R.id.btn_secondA_1: 30 Jump2Main(); 31 break; 32 default: 33 break; 34 } 35 } 36 } //按钮监听部分,非常便于阅读和管理 37 38 public void Jump2Second(){ 39 setContentView(R.layout.activity_second); 40 long currTime = System.currentTimeMillis(); 41 42 Toast.makeText(MainActivity.this, 43 "切换耗时:" +String.valueOf(currTime-time)+"毫秒", 44 45 Toast.LENGTH_SHORT).show(); 46 47 Button btn_secondActivity = (Button)findViewById(R.id.btn_secondA_1); 48 btn_secondActivity.setOnClickListener(new ButtonListen()); 49 } //跳转到第二个页面方法实现 50 51 public void Jump2Main(){ 52 setContentView(R.layout.activity_main); 53 long currTime = System.currentTimeMillis(); 54 55 Toast.makeText(MainActivity.this, 56 "切换耗时:" +String.valueOf(currTime-time)+"毫秒", 57 58 Toast.LENGTH_SHORT).show(); 59 Button btn_mainActivity = (Button)findViewById(R.id.btn_mainAc_1); 60 btn_mainActivity.setOnClickListener(new ButtonListen()); 61 } 62 } //返回到第一个页面方法实现 63
说明:
主要分为四部分:
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的实现与之类似。不重复。