根据效果图拆分界面

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

[android] 界面切换的核心方法的更多相关文章

  1. android 界面切换教程

    Android的界面切换其实并没有什么难度,就和java的界面切换一样简单,但是java的使用的是Swing框架进行的切换,而Android使用的是Intent 来切换框架的,这是一个全新的使用方法, ...

  2. Java线程状态切换以及核心方法

    1.Java线程状态 1.1 线程主要状态 ①初始(NEW):新创建了一个线程对象,但还没有调用start()方法.②运行(RUNNABLE):Java线程中将就绪(ready)和运行中(runnin ...

  3. [android] 界面切换的简单动画

    1. 新建个位移动画的xml文件 Activity中开启动画 使用AnimationUtils类加载动画资源文件 left_to_right.xml <?xml version="1. ...

  4. Android界面刷新方法

    Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中 ...

  5. android设计的布局在阿拉伯语下界面错乱的解决方法

    (1)正在AndroidManifest.xml声明文件的application元素中,增加” android:supportsRtl=true” (2)建] androidの设计的布局在阿拉伯语下界 ...

  6. 自定义viewpager的界面切换动画

    核心操作: 1.创建一个类实现 android.support.v4.view.ViewPager.PageTransformer 根据 position 实现判断哪个界面进行界面切换动画 publi ...

  7. Unity iOS混合开发界面切换思路

    Unity iOS混合开发界面切换思路 最近有很多博友QQ 私信 或则 留言联系我,请教iOS和Unity界面之前相互切换的问题,源代码就不私下发你们了,界面跳转功能的代码我直接贴到下面好了,顺带说i ...

  8. android 界面设计基本知识Ⅲ

    本章继续讲述在android界面设计中相关的知识点.介绍内容包括BroadcastReceiver(广播),Service(服务),Widget(小部件),WebView(网页加载控件). 1.Bro ...

  9. android 界面设计基本知识Ⅱ

    上一章讲述了Android界面设计时,一些基本控件的使用,本章主要讲述自定义控件,Fragment和Headler线程机制. 1.自定义控件 (1)基本知识 dp.sp和dx      px:像素点  ...

随机推荐

  1. React Native 搭建开发环境

    1.先安装node.js,https://nodejs.org/en/download/ 然后,双击下载好的.msi文件安装即可,安装完成后,打开终端,输出npm -v 即可查看我们刚才安装的node ...

  2. 微信小程序之WebSocket

    本文版权归 OSChina jsongo0 所有,转载请标明出处,以示尊重! 原文:https://my.oschina.net/jsongo/blog/757871 为什么需要websocket?传 ...

  3. C# - 图片操作和Base64处理

    旋转 (1)按角度旋转 /// <summary> /// 根据角度旋转图标 /// </summary> /// <param name="img" ...

  4. javascript 私有化属性,和公共属性

    function TestClassA(name, number) { this.name = name; //public this.number = number; //public var ac ...

  5. Unity---解决重新调整游戏分辨率后,再运行游戏还是和之前分辨率一样的问题

    经历 上次在Unity做了个小游戏,发布的时候忘了取消默认全屏了. 于是在Unity重新发布了一下,可是出来后分辨率还是默认全屏. 当时百思不得其解 原因 主要是因为当用Unity发布一个新游戏的时候 ...

  6. falsk 请求钩子

    请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:before_first_request在处理第一个请求前执行before_request在每次请求前执行如果在某修饰的函数中返回了一个 ...

  7. 运算符重载入门demo

    #include "pch.h" #include <iostream> using namespace std; class A { public: A(int x, ...

  8. TX1/TX2 Qt安装与配置

    安装Qt 安装Qt Creator,打开终端执行如下命令: sudo apt-get install qt5-default qtcreator -y 安装Qt示例和文档: sudo apt-get ...

  9. js高级程序设计 笔记 --- 引用类型

    一,变量和作用域 1, js变量可以保存两种类型,基本类型.引用类型和symbol类型,基本类型有5种:undefined.null.boolean.number.string,它们都有以下的特征 基 ...

  10. dynamics crm 365 附件上传图片并且显示。

    参考了几篇博客做的: 新增websource文件(html): <!DOCTYPE html> <html> <head> <title>注释</ ...