当前位置:操作系统 > 安卓/Android >>

Android通过setContentView切换页面示例(华为U9200下测试,最短切换耗时2ms,稳定在6-8ms)

    一般切换页面,通过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的实现与之类似。不重复。
 


作者:yanzi1225627
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,