当前位置: 首页 > news >正文

Android View

Android View:界面的基本积木

想象一下,Android 应用的界面就像是一个装满了各种小玩具的大盒子。每个小玩具都是一个View,它们是 Android 界面的基本构建块。

View 是什么?

View 就是屏幕上的一个矩形区域,它可以显示内容,也可以接收用户的触摸输入。简单来说,View 就是你在手机上看到的一切东西 - 按钮、文本框、图片、甚至是空白区域。

View 的子类:丰富的 "玩具库"

View 有很多子类,就像不同类型的玩具:

注意事项(玩玩具的规则)

总结

View 就像是 Android 界面的乐高积木,你可以用它们搭建出任何你想要的界面。通过 XML 布局文件和 Java/Kotlin 代码,你可以创建、配置和操作这些 View。掌握了 View,你就掌握了 Android 界面开发的基础!

  • TextView:显示文字的玩具(你正在看的这段文字如果在 App 里就是 TextView)
  • Button:可以点击的玩具(比如 "登录"、"提交" 按钮)
  • ImageView:显示图片的玩具(比如 App 里的图标)
  • EditText:可以输入文字的玩具(比如登录框)
  • ListView/RecyclerView:装了很多小玩具的长盒子(比如微信的聊天列表)
  • 布局文件:XML 文件,比如activity_main.xml,你可以在这里 "摆放" 你的玩具
  • Java/Kotlin 代码:你可以在代码中创建和操作这些玩具
    常用方法(玩具的玩法)
  • 设置属性

    • setText("文本内容"):给 TextView 设置文字
    • setBackgroundColor(color):设置背景颜色
    • setVisibility(View.VISIBLE/GONE/INVISIBLE):控制 View 的可见性
  • 获取属性

    • getText():获取 TextView 的文字(在 Kotlin 中是text属性)
    • getWidth()/getHeight():获取 View 的宽高
  • 事件处理

    • setOnClickListener():设置点击事件
    • setOnLongClickListener():设置长按事件
  • 布局相关

    • setLayoutParams():设置布局参数
    • invalidate():重绘 View
  • 命名规范:给 View 起个好名字,比如loginButton而不是button1

  • 内存泄漏

    • 不要在非静态内部类中持有 Activity 的引用
    • 不再使用的 View 要及时释放
  • 性能优化

    • 避免在循环中频繁调用findViewById()
    • 使用ViewStub延迟加载不常用的 View
  • 布局优化

    • 减少嵌套层级
    • 使用merge标签减少 View 层级
http://www.lqws.cn/news/203293.html

相关文章:

  • Android音频开发:Speex固定帧与变长帧编解码深度解析
  • win32相关(IAT HOOK)
  • 【AI学习】wirelessGPT多任务无线基础模型摘要
  • GPT-5:不止于回答,AI学会了“思考”
  • Linux进程(中)
  • docker安装RabbitMQ
  • 14-Oracle 23ai Vector Search 向量索引和混合索引-实操
  • Oracle 19c RAC集群ADG搭建
  • 添加禁用状态
  • Python: 告别 ModuleNotFoundError, 解决 pipx 环境下 sshuttle 缺少 pydivert 依赖的终极指南
  • 有没有 MariaDB 5.5.56 对应 MySQL CONNECTION_CONTROL 插件
  • LabVIEW主轴故障诊断案例
  • Clickhouse统计指定表中各字段的空值、空字符串或零值比例
  • 机器学习监督学习实战五:六种算法对声呐回波信号进行分类
  • Mac 安装git心路历程(心累版)
  • ARM SMMUv3简介(一)
  • # 主流大语言模型安全性测试(二):英文越狱提示词下的表现与分析
  • Spring IoC 模块设计文档
  • FreeRTOS任务调度过程vTaskStartScheduler()任务设计和划分
  • LeetCode--24.两两交换链表中的结点
  • go-zero微服务入门案例
  • vite+tailwind封装组件库
  • 如何配置 MySQL 允许远程连接
  • 《探秘局域网广播:网络世界的 “大喇叭”》
  • 64、js 中require和import有何区别?
  • Xilinx FPGA 重构Multiboot ICAPE2和ICAPE3使用
  • LeetCode 高频 SQL 50 题(基础版)之 【子查询】· 上
  • 【力扣链表篇】19.删除链表的倒数第N个节点
  • CRMEB 中 PHP 快递查询扩展实现:涵盖一号通、阿里云、腾讯云
  • A Survey on the Memory Mechanism of Large Language Model based Agents