《移动项目实践》实验报告——Android组合控件
实验目的
1、熟悉App开发常用的一些组合控件,主要包括底部标签栏的实现和用法、顶部导航栏的用法、横幅轮播条的实现和用法、循环视图3种布局的用法、材质设计库3种布局的用法等;
实验内容
仿淘宝主页
上图是淘宝App的主页截图,这也是电商App的通用模板。类似的电商App还有:(1)京东;(2)唯品会;(3)苏宁易购;(4)当当;(5)美团。本次实验也可以仿这几个电商平台中的某个实现。
实验过程(实验的设计思路、关键源代码等)
源代码:https://gitee.com/shentuzhigang/mini-project/tree/master/android-taobao
package io.shentuzhigang.demo.taobaoimport android.app.ActivityGroup
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import io.shentuzhigang.demo.taobao.R
import io.shentuzhigang.demo.taobao.DepartmentCartActivity
import io.shentuzhigang.demo.taobao.DepartmentClassActivity
import io.shentuzhigang.demo.taobao.DepartmentHomeActivityclass DepartmentStoreActivity : ActivityGroup(), View.OnClickListener {private val mBundle = Bundle() // 声明一个包裹对象private var ll_container: LinearLayout? = nullprivate var ll_first: LinearLayout? = nullprivate var ll_second: LinearLayout? = nullprivate var ll_third: LinearLayout? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_department_store)// 从布局文件中获取名叫ll_container的线性布局,用于存放内容视图ll_container = findViewById(R.id.ll_container)ll_first = findViewById(R.id.ll_first) // 获取第一个标签的线性布局ll_second = findViewById(R.id.ll_second) // 获取第二个标签的线性布局ll_third = findViewById(R.id.ll_third) // 获取第三个标签的线性布局ll_first?.setOnClickListener(this) // 给第一个标签注册点击监听器ll_second?.setOnClickListener(this) // 给第二个标签注册点击监听器ll_third?.setOnClickListener(this) // 给第三个标签注册点击监听器mBundle.putString("tag", TAG) // 往包裹中存入名叫tag的标记串changeContainerView(ll_first) // 默认显示第一个标签的内容视图}override fun onClick(v: View) {if (v.id == R.id.ll_first || v.id == R.id.ll_second || v.id == R.id.ll_third) {changeContainerView(v) // 点击了哪个标签,就切换到该标签对应的内容视图}}// 内容视图改为展示指定的视图private fun changeContainerView(v: View?) {ll_first!!.isSelected = false // 取消选中第一个标签ll_second!!.isSelected = false // 取消选中第二个标签ll_third!!.isSelected = false // 取消选中第三个标签v!!.isSelected = true // 选中指定标签if (v === ll_first) {// 切换到第一个活动页面DepartmentHomeActivitytoActivity("first", DepartmentHomeActivity::class.java)} else if (v === ll_second) {// 切换到第二个活动页面DepartmentClassActivitytoActivity("second", DepartmentClassActivity::class.java)} else if (v === ll_third) {// 切换到第三个活动页面DepartmentCartActivitytoActivity("third", DepartmentCartActivity::class.java)}}// 把内容视图切换到对应的Activity活动页面private fun toActivity(label: String, cls: Class<*>) {// 创建一个意图,并存入指定包裹val intent = Intent(this, cls).putExtras(mBundle)// 移除内容框架下面的所有下级视图ll_container!!.removeAllViews()// 启动意图指向的活动,并获取该活动页面的顶层视图val v = localActivityManager.startActivity(label, intent).decorView// 设置内容视图的布局参数v.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)// 把活动页面的顶层视图(即内容视图)添加到内容框架上ll_container!!.addView(v)}companion object {private const val TAG = "DepartmentStoreActivity"}
}
实验结果(实验最终作品截图说明)
实验心得
1、熟悉App开发常用的一些组合控件,主要包括底部标签栏的实现和用法、顶部导航栏的用法、横幅轮播条的实现和用法、循环视图3种布局的用法、材质设计库3种布局的用法等;
参考文章
《移动项目实践》实验报告——Android组合控件相关推荐
- android自定义组件属性,Android组合控件详解 自定义属性
组合控件详解 & 自定义属性 组合控件是自定义控件的一种,只不过它是由其他几个原生控件组合而成,故名组合控件. 在实际项目中,GUI 会遇到一些可以提取出来做成自定义控件情况. 一个自定义控件 ...
- android组合控件的焦点,撸一个简单的TV版焦点控制的日历控件
1.效果 最近需求要一个遥控控制的日历控件,找了半天没找到轮子,就自己撸一个,先看效果图: 效果图.gif 2.XML属性,所有属性默认为效果图 calender_textSize:星期和日期的字体大 ...
- Android 组合控件之删除文本框
1.闲聊 说到组合控件,人人都会.为什么要这么说呢?可以这样说我们每一个layout布局都是你定义的组合控件,但是,当你需要实现同一种功能的时候,有N个界面都需要这种组合控件,你们可能会想了:我每次使 ...
- 《移动项目实践》实验报告——Android高级控件
实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...
- 《移动项目实践》实验报告——Android中级控件
实验目的 1.熟悉App开发常用的一些中级控件及相关工具,主要包括各种布局用法.特殊按钮的用法.下拉框与基本适配器的用法.编辑框的用法等: 2.掌握Activity的基本概念与常见用法: 实验内容 2 ...
- 《移动项目实践》实验报告——Android初级控件
实验目的 1.掌握Android屏幕显示与初级视图的相关知识: 2.掌握包括屏幕显示基础.简单布局的用法.简单控件的用法.简单图形的用法 实验内容 以windows上的计算器为例,程序界面如下图所示: ...
- android组合控件 重叠,Android 组合控件实现布局的复用的方法
看到很多项目会有实现自己的标题栏的做法,通常的界面是左边按钮或文字,加上中间的标题和右边的按钮或文字组成的.比较好的一种做法是使用include标签,复用同一个xml文件来实现布局的复用.但是这种方法 ...
- Android学习--02(猜猜我的星座App源码+Android常用控件TextView+EditText+Button+ImangeView+DatePicker+App间通信+跳转页面)
猜猜我的星座App 1 Android常用控件 1.1 TextView控件 1.1.1 简介 1.1.2属性 1.1.3 扩展属性 1.1.4 TextView的使用方法 1.1.5总结 1.2 E ...
- Android Studio自定义组合控件
在Android的开发中,为了能够服用代码,会把有一定共有特点的控件组合在一起定义成一个自定义组合控件. 本文就详细讲述这一过程.虽然这样的View的组合有一个粒度的问题.粒度太大了无法复用,粒度太 ...
最新文章
- Java创建MySQL句柄_MySQL创建用户(CREATE USER)
- 考研专业课计算机网络调剂,计算机网络信息中心2019年硕士研究生接收调剂信息公告...
- android 开发环境 配置和说明
- why object family error message is filtered out
- 用冒泡法对10个整数从小到大排序
- GNU glibc 爆 gethostbyname 缓冲区溢出漏洞
- 3dmax入门基础知识:3dmax常用功能
- android 编程app_2020年用于Android App开发的顶级编程语言
- Elasticsearch之快速入门篇(个人笔记)
- R语言生存分析:Cox回归
- 用OneTab减少Chrome内存消耗
- 华为云内网服务器通过公网服务器访问外网
- 三国杀移动版虎牢关模式神吕布技能是什么?
- 1688关键词搜索api(附可用)
- Beautiful Soup 4.4.0 文档 — beautifulsoup 4.4.0q 文档
- Markdown 常用语法
- Android自定义View(七)_Canvas之图片文字
- Android应用开发中,第三方集成新浪微博(sinaWeiboSDK)的过程记录
- 快速入门rsync远程同步
- 【已解决】运行tsc **.ts后提示“无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\tsc.ps1,因为在此系统上禁止运行脚本。”
热门文章
- linux服务器报Too many open files的解决方法
- 使用存储过程及触发器案例
- wordpress content.php,2020主题:content.php
- aop springboot 传入参数_Spring、SpringMVC和SpringBoot看这一篇就够了!
- thinkphp5 图片压缩旋转_【好工具】在线免费无限制的PDF处理工具(转换、编辑、分割、合并、压缩)...
- jdbc mysql 换行符_mysql JDBC URL格式各个参数详解
- 动态让控件超出屏幕_JAVA浏览器控件JxBrowser v7.5上线!更轻松处理Dynamic Favicons...
- php和dart的区别,Dart相等和关系运算符
- Spring-data-redis集成提交数据出现'maxActive'和‘maxWaitMillis’错误
- 五十八、Vue中的计算属性,方法和侦听器