2011-10-24 81 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