[android] 界面切换的核心方法详解手机开发

根据效果图拆分界面

 

  1. 主体部分

 

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

 

ViewViewGroup的区别:ViewGroup有特有的addView()removeView()方法,RelativeLayout添加进来View之后,后一个会覆盖住前一个ViewLinearLayout添加进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; 
    } 
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5387.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论