在安卓系统中,@drawable 和 @android:drawable 有何不同?

4

这两个表达有什么区别吗?

android:src="@andriod:drawable/filename"

and

android:src="@drawable/filename"

我可以在xml文件中通过这种方式访问相同的资源,那么它们有什么区别呢?


@andriod:drawable/ 是默认的Android可绘制资源,请查看此链接:https://dev59.com/qnA75IYBdhLWcg3wm6ax - Maveňツ
5个回答

10

有很大的区别:

android:src="@android:drawable/filename"

它允许您仅访问由Android包提供的可绘制对象,并且:

android:src="@drawable/filename"

允许您访问放置在应用程序drawable文件夹中的可绘制对象。


这是否意味着在drawable-hdpi文件夹内的某些内容可以通过"@android"访问,而已复制到drawable文件夹中的资源可以通过"@drawable"访问?@Sarthak - Jeet
@Jeet,这个问题的答案非常复杂,但简单来说:假设您有一张要在ImageView中显示的图像,现在每个设备都有不同的分辨率,因此您的图像可能在某些设备上显示正确,在某些设备上可能会模糊。因此,Android有不同的drawable文件夹,其中主要的是:mdpi、hdpi、xhdpi、xxhdpi。现在,您可以将相同的图像放入这些文件夹中,并使用不同分辨率的图像,Android会自动比较运行时设备的分辨率,并从相关文件夹中显示图像。 - Sarthak Mittal

2
这两个调用的区别很简单。
android:src="@andriod:drawable/filename" 

这将允许您访问Android SDK中的内置可绘制文件。

android:src="@drawable/filename"

这将提供访问可在 Android SDK 中项目文件夹的 res 文件夹中使用的 drawable 文件。
使用第一个选项,我们无法查看项目 res 文件夹中任何 drawable 的名称。当您使用第二个选项时,它不会显示内置 drawable 的名称。
您可以在 SDK 中找到 API 级别使用的所有内置资源(drawable、动画等)。
<your_path>\sdk\platforms\<api-level>\data\res

例如<your_path>\sdk\platforms\android-19\data\res,这将显示API-19版本下的所有内置资源。


1

符号为:

@[package:]drawable/filename

你所访问的第一行资源是嵌入在安卓项目中的可绘制对象。如果没有定义包名,你将从应用程序的res文件夹中访问资源。这些不是相同的资源。

1
当然可以。"@andriod:drawable/filename"和@drawable/filename之间有所不同。
"@android:drawable/filename"

系统提供了资源,这些资源包含在你的SDK中。你可以探索资源路径来查看。
"@drawable/filename"

这是我们自己的资源,例如应用程序的图标、背景等。


1
我可以帮助您翻译以下内容,这是关于编程的:

是的,两者非常不同。

android:src="@andriod:drawable/filename" 这是一个资源,您可以获取Android内置的资源。

android:src="@drawable/filename" 这是您添加自己的资源并访问的资源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接