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

  • 相关阅读:
    Django框架文件保存的流程(以及自定义FDFS)
    linux下解决端口被占用的问题
    UNIX 网络编程第三版
    KMP算法
    Java Inner class && nested class
    Java 嵌套作用域
    Java中的blank final
    Java中的接口与抽象类
    error C3163: “_vsnprintf”: 属性与以前的声明不一致
    在某个目录下的所有文件中查找包含某个字符串的Windows命令
  • 原文地址:https://www.cnblogs.com/xiaobaicai12138/p/5614907.html
Copyright © 2020-2023  润新知