電話

    0411-39943997

仟億科技
客服中心
  • 電話
  • 電話咨詢:0411-39943997
  • 手機
  • 手機咨詢:15840979770
    手機咨詢:13889672791
網絡營銷 >更多
您現在的位置:首頁 > 新聞中心 > 常見問題

Android安卓頁面切換辦法和差別

作者:billionnet 發布于:2012/3/28 17:54:17 點擊量:

通用的頁面跳轉辦法有兩種:


1、Intent


Intent合適Activity與Activity之間的跳轉,按返回鍵可以直接返回前一頁面


毛病:須要到Manifest注冊Activity


2、setContentView


合適同一Activity里的不合View之間跳轉


長處:按返回鍵不會返回到前一頁面,須要本身添加按鍵監聽代碼來實現


 


只切換Layout運行速度會快點,因為啟動activity是最耗時的。
數據傳遞也簡單,不消Intent.setExtra之類的。
毛病是所有控件的事務處理懲罰、加載之類的操縱全集中由activity經管,拆分不敷清楚 


 


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;

public class IntentTest extends Activity {
    
    private LinearLayout mainView=null;
    private Button button1=null;
    private Button button2=null;
    
    private LinearLayout layout=null;
    private TextView tv=null;
    
    /*
     * 因為setContentVeiw()函數返回是void,體系中沒有供給獲取當前View的函數
     * 所以此處添加一個整形變量用來指導當前View的id
     */
    private int currentViewId;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //tv初始化
        tv=new TextView(this);
        tv.setText("這是layout里面的tv");
        //layout初始化
        layout=new LinearLayout(this);
        layout.setId(100);//這里須要指定id,不然默認的id會和mainView一樣,都是-1
        layout.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
        layout.addView(tv);
        //button1初始化
        button1=new Button(this);
        button1.setLayoutParams(new LinearLayout.LayoutParams(-2,-2));
        button1.setText("Intent體式格式跳轉");
        button1.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                /*此處用Intent來實現Activity與Activity之間的跳轉*/
                Intent intent=new Intent();
                intent.setClass(IntentTest.this,MyActivity.class);
                //Intent intent=new Intent(IntentTest.this,MyActivity.class);
                startActivity(intent);
            }
        });
        //button2初始化
        button2=new Button(this);
        button2.setLayoutParams(new LinearLayout.LayoutParams(-2,-2));
        button2.setText("setContentView體式格式跳轉");
        button2.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                //此處用setContentView體式格式來實現同一Activity不合View跳轉
                setCurrentView(layout);
            }
        });
        //mianView初始化
        mainView=new LinearLayout(this);
        mainView.setId(1000);//指定id
        mainView.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
        mainView.setOrientation(LinearLayout.VERTICAL);
        mainView.addView(button1);
        mainView.addView(button2);
        //顯示mainView
        setCurrentView(mainView);
    }
    
    /*
     * 這里重寫onKeyDown()函數,實現返回鍵的監聽
     * 若是經由過程顯示的View對keyListener進行監聽,則返回鍵監聽不到
     * 所以此處是經由過程在Activity里面重寫onKeyDown()函數來實現監聽
     * 此處若是不阻礙監聽的話,在顯示layout后按返回鍵則直接履行退出法度
     */
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if (keyCode == KeyEvent.KEYCODE_BACK) { 
            if(currentViewId==layout.getId()){
                setCurrentView(mainView);
            }else{
                System.exit(0);
            }
            return false; 
        } 
        return false; 
    }
    
    /*自定義函數setCurrentView()*/
    public void setCurrentView(View view){
        currentViewId=view.getId();
        //此處用setContentView體式格式來實現同一Activity不合View跳轉
        setContentView(view);
    }
}


import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MyActivity extends Activity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv=new TextView(this);
        tv.setText("我是MyActivity里的tv");
        setContentView(tv);
    }
}


 



分享到:


Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號   google網站地圖   百度網站地圖   網站地圖

公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752

法律聲明:未經許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明

www精品一区二区三区四区