![[android] 界面切换的核心方法 [android] 界面切换的核心方法](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
根据效果图拆分界面
- 主体部分
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;
}
}