Android Studio 提示 R 找不到或者飘红解决方案

时间:2024-04-13 16:02:43

我们经常会遇到在项目开发时,突然 诸如 R.id.login 之类的资源引用标红报错,而我们即使手动导入,依然解决不了的问题。

问题描述:

现记录一下,我的问题及解决方法。

首先, 排除因自己手误导致的资源 id 引用错误;

其次, 常见的 先 clean,后 rebuild 并不生效,因为 执行任何一项操作都会报如下的错误:
java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error:check logs for details

Android Studio 提示 R 找不到或者飘红解决方案
我们查看详细信息,
Android Studio 提示 R 找不到或者飘红解决方案
Error:top-left corner pixel must be either opaque white or transparent

终于,找到了问题的症结所在。

解决方案:

1、下策:将 .9.png 直接改为 .png 。这就违背了我们使用 .9 图片的初衷和目的了。

2、上策:依次查验自己此次引入的所有 .9 图片,查看是否有不符合格式的图片。比如我项目中就有一张图片存在问题。我们可以直接使用 android studio 打开那张 .9 图,才发现,原来是没有黑边。(不知道我理解的对不对)因为那些黑边是控制 .9 图是否拉伸的关键。

所以, 用鼠标点击边缘加上黑边后,前面的两个报错随即消失。重新导入 R 文件即可了。

修改之前:
Android Studio 提示 R 找不到或者飘红解决方案
修改之后:
Android Studio 提示 R 找不到或者飘红解决方案

关于 .9 图的个人见解

为了使得我们的图片资源在不同屏幕密度上可以显示相同的像素效果,需要使用自动拉伸位图:Nine-Patch 的图片类型(.9.png)。它是一种被特殊处理过的 PNG 图片,设计时可以指定图片的拉伸区域和非拉伸区域;使用时,系统就会根据控件的大小自动地拉伸你想要拉伸的部分。

比如我们有这样一个需求:按钮的背景图片必须能够随着按钮大小的改变而改变。

倘若使用普通的图片将很难实现上述功能,因为运行时会均匀地拉伸或压缩你的图片(导致图片变模糊)。所以通过 SDK 中带有的 draw9patch 工具打开这张图片(工具位置在 SDK 的 tools 目录下),你可以在图片的左边框和上边框绘制来标记哪些区域可以被拉伸。你也可以在图片的右边框和下边框绘制来标记内容需要放置在哪个区域。比如下图:
Android Studio 提示 R 找不到或者飘红解决方案
简单点来说,左、上两部分规定了图像的可拉伸部分,而右、下两部分则规定了图像的内容区域。其中,黑线的作用:

顶部: 在水平拉伸的时候,保持其他位置不动,只在这个点代表区域做无限的延伸
左边: 在竖直拉伸的时候,保持其他位置不动,只在这个点代表区域做无限的延伸
底部: 在水平拉伸的时候,指定图片里的内容显示的区域
右边: 在竖直拉伸的时候,指定图片里的内容显示的区域

左边和上边的重合区域是拉伸区 ,右边和下边的重合区是内容显示区。

更多关于 .9.png 图片的制作和使用,感兴趣的童鞋可自行 Google!

------至所有正在努力奋斗的程序猿们!加油!!
有码走遍天下 无码寸步难行
1024 - 梦想,永不止步!
爱编程 不爱Bug
爱加班 不爱黑眼圈
固执 但不偏执
疯狂 但不疯癫
生活里的菜鸟
工作中的大神
身怀宝藏,一心憧憬星辰大海
追求极致,目标始于高山之巅
一群怀揣好奇,梦想改变世界的孩子
一群追日逐浪,正在改变世界的极客
你们用最美的语言,诠释着科技的力量
你们用极速的创新,引领着时代的变迁

——乐于分享,共同进步,欢迎补充
——Any comments greatly appreciated
——诚心欢迎各位交流讨论!QQ:1138517609
——****:https://blog.****.net/u011489043
——简书:https://www.jianshu.com/u/4968682d58d1
——GitHub:https://github.com/selfconzrr