2011-10-24 83 views
1

的Android項目的知名度我當前訪問兩個不同的XML文件,以改變從一個視圖到另一個,所以我可以在以後添加單獨的接口的兩個活動文件。然而,這些觀點並沒有像我想的那樣快速改變,而且切換速度明顯很慢。我已經決定,在運行期間簡單地使用相對佈局和更改一個佈局的可見性可能會更順利地轉換以創建不同的用戶界面。更改特定的相對佈局在運行時在Eclipse

然而,儘管使用多個例子,我還沒有創建一個平滑的過渡。我的觸發是我使用(雖然這不會在你應該在Android上運行該項目的當前狀態顯示出來)使用按鈕活動之間切換代碼。

Android版本是2.2,我試圖改變相對佈局,以「隱形」使用了「第一頁」活動的Java代碼的可見性。我已經看過多個例子,但是沒有一個足夠完整,可以提供我需要的信息來完成這項工作。我打算在我爲Android製作的所有項目中使用此功能,並且我認爲這對其他開發人員會有幫助,因爲它有助於演示。

我已經發布我的項目到以下地址,以確保沒有代碼被排除在外,情況是完全清楚:

https://sites.google.com/site/elynxus102/projectandroid.zip?attredirects=0&d=1

它會說「找不到網頁」。然而,上面寫着該網站上的鏈接projectandroid.zip

我應該還提到,我使用Eclipse 1.41,和以下插件:

的Android DDMS 14.0.0.v201110171935- 205994個

的Android開發工具14.0.0.v201110171935-205994

的Android瀏覽器層次14.0.0.v201110171935-205994

的Android Traceview 14.0.0.v201110 171935-205994

谷歌App Engine的Java SDK的1.5.5 1.5.5.r37v201110112027

谷歌Eclipse插件3.7 2.4.2.relr37v201110112027

谷歌Web工具包SDK 2.4.0 2.4.0.relr37v201110112027

SWT Designer中1.1.0.r37x201109091152

VEX SDK(孵化)1.0.0.201105031353

VEX XML艾迪tor(孵化)1.0.0.201105031353

回答

0

你沒有使用相對佈局來存儲兩個佈局,使用ViewSwitcher,它正是這個。

如果你有兩個佈局文件,如果你使用的UI編輯器,比你的onCreate(),這是合理的:

public class SwitcherActivity extends Activity implements View.OnClickListener{ 

    private ViewSwitcher viewSwitcher; 
    private Button showSecondButton; 
    private Button showFirstButton; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     viewSwitcher = new ViewSwitcher(this); 
     viewSwitcher.addView(getLayoutInflater().inflate(R.layout.first, null)); 
     viewSwitcher.addView(getLayoutInflater().inflate(R.layout.second, null)); 
     setContentView(viewSwitcher); 

     showSecondButton = (Button) findViewById(R.id.showSecondButton); 
     showSecondButton.setOnClickListener(this); 
     showFirstButton = (Button) findViewById(R.id.showFirstButton); 
     showFirstButton.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     if ((v.getId() == R.id.showFirstButton)&&(viewSwitcher.getDisplayedChild()==1)) { 
     viewSwitcher.showPrevious(); 
     } else if ((v.getId() == R.id.showSecondButton)&&(viewSwitcher.getDisplayedChild()==0)) { 
     viewSwitcher.showNext(); 
     } 
    } 
} 

這樣你可以通過按鈕prev的按視圖之間切換/下一個按鈕,您應該將其包含在頁面的佈局中。當然,這只是一個例子,你可以有其他事件觸發頁面變化,如從服務器接收結果,手勢,超時等...

+0

這確實接近回答我的問題,但它似乎有一些關鍵編碼仍然缺失,這將使它在運行時工作。你可能會包含一個源代碼示例,它將顯示如何在運行時工作或通過電子郵件發送它? (如果你願意的話,你可以修改我的原始代碼)我在互聯網上多次看到這個問題,看起來這個小部件的一個很好的例子是一個罕見的發現,所以我相信它對其他程序員會有用。我的電子郵件地址是[email protected]。 – Matthew

+0

我編輯了迴應,這應該工作。 –

+0

好吧,我把所有的東西都放進去了,在xml代碼中添加了一個viewswitcher,並修改了代碼以適合我的項目。不過,我似乎在程序中還有一個錯誤。具體來說,錯誤讀取 - 「無法對類型爲ViewAnimator的非靜態方法顯示Previous()的靜態引用」該行顯示爲:ViewSwitcher.showPrevious();這裏有一個指向新文件的鏈接。 https://sites.google.com/site/androidattache/version2android – Matthew