专栏首页陶士涵的菜地[android] 界面切换的核心方法

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Go] golang的range循环遍历通道

    陶士涵
  • [javaSE] 集合框架(TreeSet)

    TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构

    陶士涵
  • [android] 优酷环形菜单-旋转动画

    获取房子,菜单图标ImageView对象,获取三个圆环RelativeLayout对象

    陶士涵
  • 0487-CDH6.1的新功能

    北京时间2018年12月19日,Cloudera正式发布Cloudera Enterprise 6.1.0,上次发布CDH6.0是8月30日,差不多过去了3个多...

    Fayson
  • 评论JS插件~多说+畅言

    多说API:http://dev.duoshuo.com/docs/512d6e2e418847315a000001 发表评论 接口名称 /posts/crea...

    逸鹏
  • 浅谈前端常用的 MV* 架构模式

    软件架构模式、软件设计模式傻傻分不清楚?mvc,mvp,mvvm 有什么区别,各自都有什么优缺点和适用的场景?前端常用的设计模式都有哪些?今天主要从前端开发的角...

    江米小枣
  • Prometheus监控学习笔记之Prometheus的Relabel,SD以及Federation功能

    k8s 默认以及推荐的监控体系是它自己的一套东西:Heapster + cAdvisor + Influxdb + Grafana,具体可以看 这里 。

    Jetpropelledsnake21
  • zookeeper curator选主(Leader)

    在分布式系统设计中,选主是一个常见的场景。选主是一个这样的过程,通过选主,主节点被选择出来控制其他节点或者是分配任务。 选主算法要满足的几个特征: 1)各个节点...

    用户1225216
  • ★Kali信息收集~2.Whois :域名信息

    Web地址:http://whois.chinaz.com/ | http://www.whois.net/ 软件参数:whois ? 常用命令:whois...

    逸鹏
  • 设计模式 - 抽象工厂模式

    在工厂模式中,每一个工厂负责生产对应的一款具体的产品,具有唯一性。但有时候,人们还需要一个工厂能够提供多个产品对象。

    子乾建建-Jeff

扫码关注云+社区

领取腾讯云代金券