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;
        }
    }
  • 相关阅读:
    Python基础语法 第2节课(数据类型转换、运算符、字符串)
    python基础语法 第5节课 ( if 、 for )
    python基础语法 第4节课 (字典 元组 集合)
    Python基础语法 第3节课 (列表)
    A. Peter and Snow Blower 解析(思維、幾何)
    C. Dima and Salad 解析(思維、DP)
    D. Serval and Rooted Tree (樹狀DP)
    C2. Balanced Removals (Harder) (幾何、思維)
    B. Two Fairs 解析(思維、DFS、組合)
    D. Bash and a Tough Math Puzzle 解析(線段樹、數論)
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5621498.html
Copyright © 2011-2022 走看看