Android通過setContentView切換頁面樣本(華為U9200下測試,最短切換耗時2ms,穩定在6-8ms)

來源:互聯網
上載者:User

          一般切換頁面,通過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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.