你的位置:首页 > 操作系统

[操作系统][android] 界面切换的核心方法


根据效果图拆分界面

 

  1. 主体部分

 

View ==> ViewGroup ==> RelativeLayout,主体部分使用RelativeLayout作为占位

 

View和ViewGroup的区别:ViewGroup有特有的addView()和removeView()方法,RelativeLayout添加进来View之后,后一个会覆盖住前一个View;LinearLayout添加进View之后,会顺序排放,不适合

 

设计原理:

树形结构的数据处理,遵循组合设计模式

 

  1. 简单的界面切换

 

找到主体部分的RelativeLayout对象,添加进来View对象

两秒后切换第二个界面,利用Handler发送延迟消息模拟切换

RelativeLayout对象,添加进来第二个View对象

 

问题:

  1. 清理掉之前界面
  2. 切换动画
  3. 切换页面的通用化处理
  4. 使用按钮点击切换

 

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;  }}