根据效果图拆分界面
- 主体部分
View ==> ViewGroup ==> RelativeLayout,主体部分使用RelativeLayout作为占位
View和ViewGroup的区别:ViewGroup有特有的addView()和removeView()方法,RelativeLayout添加进来View之后,后一个会覆盖住前一个View;LinearLayout添加进View之后,会顺序排放,不适合
设计原理:
树形结构的数据处理,遵循组合设计模式
- 简单的界面切换
找到主体部分的RelativeLayout对象,添加进来View对象
两秒后切换第二个界面,利用Handler发送延迟消息模拟切换
RelativeLayout对象,添加进来第二个View对象
问题:
- 清理掉之前界面
- 切换动画
- 切换页面的通用化处理
- 使用按钮点击切换
MainActivity.java
private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { loadMemberView(); } }; /** * 初始化主体 */ public void initMiddle() { mainContainer=(RelativeLayout) findViewById(R.id.il_main); loadLoginView(); handler.sendEmptyMessageDelayed(1, 2000); } /** * 加载登陆界面 */ private void loadLoginView() { View child=new IndexView(this).getLoginView(); mainContainer.addView(child); } /** * 加载会员界面 */ private void loadMemberView() { View child=new IndexView(this).getMemberView(); mainContainer.removeAllViews(); mainContainer.addView(child); }
IndexView.java
package com.tsh.lottery.views; import android.content.Context; import android.view.View; import android.widget.TextView; /** * 界面 * @author taoshihan * */ public class IndexView { private Context context; public IndexView(Context context) { this.context = context; } /** * 获取登陆界面 * @return */ public View getLoginView() { TextView tv=new TextView(context); tv.setText("我是登陆界面"); return tv; } /** * 获取会员界面 * @return */ public View getMemberView() { TextView tv=new TextView(context); tv.setText("我是会员界面"); return tv; } }
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/app/5387.html