我对布局和活动有疑问,主要关注的是应用程序的效率。我的问题是
在单个活动(例如单个主要活动)中使用多个布局XML文件,并且仅更改不同XML文件的视图内容是否简单有效,例如:使用处理程序在单个活动中登录和注册布局文件
OR
不同的活动,例如登录页面和注册页面,都有单独的活动和相应的布局文件
就效率和便捷性而言,哪种最佳实践是? 还请列出这些方法的利弊? 以及使用这些方法中的任何一种的情况?
谢谢。
答案 0 :(得分:1)
方法-1:
请参见android.widget.ViewFlipper的完整示例。有了它,您可以从xml创建不同的布局,然后使用类似这样的简单方法在它们之间切换:
ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.myViewFlipper);
// or you can switch selecting the layout that you want to display
viewFlipper.setDisplayedChild(1);
viewFlipper.setDisplayedChild(viewFlipper.indexOfChild(findViewById(R.id.secondLayout)
Xml 示例,具有两种布局:
<ViewFlipper
android:id="@+id/myViewFlipper"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/firstLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
[...]
</LinearLayout>
<LinearLayout
android:id="@+id/thirdLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
[...]
</LinearLayout>
</ViewFlipper>
方法-2:
将 ViewSwitcher
小部件添加到xml布局文件中。到**ViewSwitcher**
添加2个新布局
viewSwitcher = (ViewSwitcher)findViewById(R.id.viewSwitcher1);
myFirstView= findViewById(R.id.view1);
mySecondView = findViewById(R.id.view2);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (viewSwitcher.getCurrentView() != myFirstView){
viewSwitcher.showPrevious();
} else if (viewSwitcher.getCurrentView() != mySecondView){
viewSwitcher.showNext();
}
}
});
具有两种布局的Xml示例:
<ViewSwitcher
android:id="@+id/viewSwitcher1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:inAnimation="@android:anim/slide_in_left" >
<LinearLayout
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/text"
android:text="This is simplezdscsdc text"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/view2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/text"
android:text="This issdsdsds simplezdscsdc text"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
</ViewSwitcher>
注意:-ViewFlipper最适合在单个活动中进行多种布局。
答案 1 :(得分:0)
如果您谈论的是幕后的逻辑或类似的东西,那么在任何一项活动中都没有任何专业人员可以使用多个布局XML文件。登录页面具有自己的目的,数据处理逻辑,向服务器发送数据等。它们与注册页面中的目的,逻辑,端点等不同。
这与Single responsibility principle的SOLID相反,这是不可接受的。我认为,唯一允许这样做的情况是在初始阶段进行学习。