[android] 界面切换的核心方法
2023-02-18 15:47:14 时间
根据效果图拆分界面
- 主体部分
View ==> ViewGroup ==> RelativeLayout,主体部分使用RelativeLayout作为占位
View和ViewGroup的区别:ViewGroup有特有的addView()和removeView()方法,RelativeLayout添加进来View之后,后一个会覆盖住前一个View;LinearLayout添加进View之后,会顺序排放,不适合
设计原理:
树形结构的数据处理,遵循组合设计模式
- 简单的界面切换
找到主体部分的RelativeLayout对象,添加进来View对象
两秒后切换第二个界面,利用Handler发送延迟消息模拟切换
RelativeLayout对象,添加进来第二个View对象
问题:
- 清理掉之前界面
- 切换动画
- 切换页面的通用化处理
- 使用按钮点击切换
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; } }
相关文章
- 数据治理很抽象吗
- Elasticsearch互联网主流分布式全文检索框架实战-ElasticStack(上)v7.14.0
- 分布式全局ID生成器原理剖析及非常齐全开源方案应用示例
- ElasticJob分布式任务调度应用v2.5.2
- 云原生概念你了解多少
- 主流微服务一站式解决方案Spring Cloud Alibaba入门看这篇就足够了-开篇v2.2.1.RELEASE
- Pulsar云原生分布式消息和流平台v2.8.0
- 回顾2022,展望2023,一个普通98年程序员的自述和分享
- SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel
- Springboot整合策略模式概念->使用场景->优缺点->企业级实战
- 三台服务器使用docker搭建redis一主二从三哨兵,概念-搭建-整合springboot
- IDEA中给源码添加自己注释——private-notes插件安装使用
- docker搭建Elasticsearch、Kibana、Logstash 同步mysql数据到ES
- Spark简单介绍,Windows下安装Scala+Hadoop+Spark运行环境,集成到IDEA中
- SpringBoot自定义注解+异步+观察者模式实现业务日志保存
- 还在使用@Autowrired注入?不妨试试@RequiredArgsConstructor
- 后端统一处理返回前端日期LocalDateTime格式化去T,Long返回前端损失精度问题
- 手写自定义springboot-starter,感受框架的魅力和原理
- Idea运行支付宝网站支付demo踩坑解决及其测试注意事项
- MyBatis之ResultMap的association和collection标签详解