zoukankan      html  css  js  c++  java
  • [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;
        }
    }
  • 相关阅读:
    work 2
    chapter02
    7.23作业
    第五章
    三层交换机
    基于nginx结合openssl实现https
    chapter10--进程和计划任务管理
    Linux系统管理08--服务器RAID及配置实战
    chapter07-- LVM逻辑卷
    Linux系统管理07--文件系统与LVM
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5621498.html
Copyright © 2011-2022 走看看