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

【Android之路】图片无障碍化、文本易翻译初步和R类

图片无障碍化

在开发app的时候,需要主要到面向的用户群体中可能存在残障人士,而盲人使用app基本是靠听力的,这个时候就需要我们对图片进行注释,来让盲人听得到这是什么内容。

示例代码

        Image(painter = image,contentDescription = null,contentScale = ContentScale.Crop,alpha = 0.5F)

在这里,contentDescription 就是所谓的注释,我们可以在这里插入字符串。

文本易翻译

如果我们直接在应用里面写死了很多硬文本,这样不仅会让后续的维护麻烦,还会让app国际化变得困难,这个时候就需要将硬文本提取出来。

实现步骤

首先,选中文本,然后点击如图所示的地方:
在这里插入图片描述
然后为我们的这个文本变量命名:
在这里插入图片描述
点击确定之后,我们就能在file name对应的文件里面看见我们的文本:
在这里插入图片描述
这个时候,我们会发现代码自己发生了变化,如图所示:

GreetingImage(message = stringResource(stringResource(R.string.aaaa)), from = stringResource(R.string.author))

R类

在 Android 项目里说到的 R,指的是 系统自动生成的一个资源索引类,全名是 com.example.yourapp.R(在你的代码里看到的是 import android.Rimport com.example.mylearningapplication.R)。


1. R 是什么

  • R 是一个自动生成的 Java/Kotlin 类,编译时由 Android Gradle 插件根据 res/ 目录下的所有资源文件生成。
  • 它把每个资源文件(布局、图片、字符串、颜色等)都转换成一个 整型常量 ID,方便在代码里引用。

位置:
app/build/generated/source/r/…/R.java (或对应的 Kotlin stub)


2. R 的结构

R 类是一个大容器,里面按资源类型分成很多内部静态类,例如:

public final class R {public static final class layout {public static final int activity_main = 0x7f0a0000;}public static final class id {public static final int button_login = 0x7f0800af;}public static final class string {public static final int app_name = 0x7f0f0012;}public static final class color {public static final int primary = 0x7f06004d;}
}
  • R.layout.activity_main → 指向 res/layout/activity_main.xml
  • R.id.button_login → 指向布局里的 android:id="@+id/button_login"
  • R.string.app_name → 指向 res/values/strings.xml 里的 app_name
  • R.color.primary → 指向 res/values/colors.xml 里的颜色

3. R 的来源有两种

  1. com.example.xxx.R(项目自己的 R)

    • 大部分情况要用自己的这个,表示你 app 下的资源。
    • 例如:setContentView(R.layout.activity_main)getString(R.string.app_name)
  2. android.R(系统 R)

    • 代表 Android 系统内置的资源,例如 android.R.layout.simple_list_item_1android.R.color.black
    • 如果你的代码里不小心 import android.R,就会导致写 R.layout.xxx 时找不到自己项目里的资源。

⚠️ 常见坑

  • Android Studio 有时会自动 import android.R,这样就无法访问自己定义的 R.layout...,要删掉 import android.R,只保留 import com.example.xxx.R

4. R 与 Compose 的关系

  • 在 Jetpack Compose 里,你不再需要通过 R.layout 去引用布局,但 图片、字符串、颜色、主题 还是通过 R

  • 例如:

    Image(painter = painterResource(R.drawable.my_icon), contentDescription = null)
    stringResource(R.string.app_name)
    

✅ 总结

  • R = 资源索引类,由编译器自动生成,把 res/ 下的所有资源映射成常量 ID。
  • com.example.xxx.R 用来访问自己 app 的资源;android.R 是系统内置资源。
  • 在 Compose 中仍然用 R 来访问非布局资源。
  • 如果遇到 “找不到布局/资源”的报错,先检查是不是被 IDE 自动导入了 android.R
http://www.dtcms.com/a/412004.html

相关文章:

  • 解决Compile Run插件运行c/c++中文乱码问题
  • 深圳做营销网站公司简介网站口碑推广
  • 网站流量是如何计算的wordpress资讯站
  • 做网站的范本深圳58同城招聘网
  • 深入浅出高并发内存池:原理、设计与实现
  • 0926第一个口头OC——快手主站前端
  • 网站职业技术培训学校广告设计公司深圳策划设计公司
  • A股大盘数据-20250926分析
  • 振动力学|01 单自由度系统的振动分析
  • 【Luogu_P2184】 贪婪大陆【树状数组】
  • 太原网站制作网站建设相关岗位名称
  • phpstorm content.dat.storageData 文件解析:作用、风险与处理建议
  • 做网站要学一些什么一学一做教育视频网站有哪些内容
  • 基于华为openEuler部署Blog轻量级博客系统
  • 西安企业建站费用互联网营销外包推广
  • 怎样做平台网站制作表白网页
  • 【系统架构设计(37)】数据库体系结构
  • 八爪鱼网络网站建设哪里有做商城的网站
  • 网站历史记录怎么恢复百度推广服务
  • 服装设计素材网站网站维护工程师
  • 如何快速查找并解除端口占用:完整指南
  • 【给蔡磊】基因编辑根治渐冻症
  • 如何掘金西方游戏市场?从玩家付费偏好解析2025出海品类与商业化模式
  • 平面设计师上的网站wordpress调用内容
  • 宁波比较好的网站公司中国建设业管理协会网站
  • SCADA系统集成WebSocket实战:构建实时可视化管理看板
  • 深圳网站制作建设公司网站给篡改了要怎么做
  • 什么是响应式网站建设英文公司网站制作
  • 外贸商城网站 定制凡客精选带货达人
  • wordpress在线代码编辑关键词首页排名优化价格