Android切换页面--setContentView

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    
View Code

说明:

主要分为四部分:

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的实现与之类似。不重复。

原文地址:https://www.cnblogs.com/xiaobaicai12138/p/5614907.html