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;
        }
    }
  • 相关阅读:
    限时购校验小工具&dubbo异步调用实现限
    Android 应用防止被二次打包指南
    什么是高防服务器?
    真屏实据丨数据大屏设计实战—揭秘企业级数据大屏设计过程
    TerminateThread函数学习
    HTML DOM访问
    gdb常用命令
    整数开方算法
    android环境下解决java.io.IOException: Malformed ipv6异常的方法
    HTML DOM 创建与修改
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5621498.html
Copyright © 2011-2022 走看看