GVKun编程网logo

Android项目中res文件夹的作用(android res文件夹)

7

对于想了解Android项目中res文件夹的作用的读者,本文将是一篇不可错过的文章,我们将详细介绍androidres文件夹,并且为您提供关于AndroidStudio–使用依赖于另一个Android

对于想了解Android项目中res文件夹的作用的读者,本文将是一篇不可错过的文章,我们将详细介绍android res文件夹,并且为您提供关于Android Studio – 使用依赖于另一个Android库的Android库构建Android项目、android – 在带有子文件夹的sd上创建一个文件夹、android – 如何获取res文件夹的Uri?、Android 项目中文件夹作用(res文件夹详细介绍)的有价值信息。

本文目录一览:

Android项目中res文件夹的作用(android res文件夹)

Android项目中res文件夹的作用(android res文件夹)

做过Android项目的人都会发现项目中有一个res文件夹,在这个文件夹下有drawable文件夹、layout文件夹、mipmap文件夹、values文件夹和menu文件夹。

drawable文件夹:在这里会放除了app图标外的所有图片资源,还包括xml类型的图片资源。

layout文件夹:在这里放的是布局资源文件。

mipmap文件夹:在这里放的是app的应用图片资源。

values文件夹:这里放的是像字符串、颜色、数组、主题样式等等这样的资源文件,这里的xml文件一般都是以<resources></resources>作为根标签的。

menu文件夹:这里放的是菜单资源文件,这个文件夹需要自己建,Android studio不会帮你自动建的。

Android Studio – 使用依赖于另一个Android库的Android库构建Android项目

Android Studio – 使用依赖于另一个Android库的Android库构建Android项目

我需要使用Gradle构建一个依赖于Android库项目A的Android项目,该项目取决于另一个Android库项目B.

到目前为止,我有以下内容:

Android项目:

的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android'

dependencies {
    compile project(':LibA')
}

android {
    compileSdkVersion 7
    buildToolsversion "17.0.0"
}

manifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.cyborg.template"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="7" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.cyborg.template.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Android库A:

的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android-library'

dependencies {
    compile project(':LibB')
}


android {
    compileSdkVersion 7
    buildToolsversion "17.0.0"
} 

manifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.lib.project.a"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk
            android:minSdkVersion="7"
            android:targetSdkVersion="7"/>

</manifest>

Android库B:

的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android-library'

android {
    compileSdkVersion 7
    buildToolsversion "17.0.0"
} 

manifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.lib.project.b"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk
            android:minSdkVersion="7"
            android:targetSdkVersion="7"/>

</manifest>

在尝试构建Android项目时,Android studio报告了以下错误:

Gradle: Execution Failed for task ':LibA:processDebugManifest'.
  > Manifest merging Failed. See console for more info.

那个控制台在哪里我想搜索有关错误的更多信息?

我发现了一些关于这个错误的问题,但它似乎与我的情况不一样.

启示?

谢谢,
亚当.

解决方法:

该库的清单文件当前必须具有< application />节点,即使它是空的.

这是我们将在某些时候删除的限制,但现在,只需添加它.

android – 在带有子文件夹的sd上创建一个文件夹

android – 在带有子文件夹的sd上创建一个文件夹

嘿家伙我有问题我得到以下代码:
File folder = new File(Environment.getExternalStorageDirectory() + "/myapp/folderone/foldertwo");
    boolean success = false;
    if (!folder.exists()) {
        success = folder.mkdir();
    }
    if (!success) {
    } else {
    }

但它根本不工作我还添加了权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

希望有人可以帮助我.

解决方法

尝试仅使用mkdirs()而不是mkdir(),这对我有用.

例:

File folder = new File(Environment.getExternalStorageDirectory() + "/myapp/folderone/foldertwo");
    boolean success = false;
    if (!folder.exists()) {
        success = folder.mkdirs();
    }
    if (!success) {
    } else {
    }

android – 如何获取res文件夹的Uri?

android – 如何获取res文件夹的Uri?

我试图获得我在drawable文件夹中的图像的Uri.我尝试了许多可能的方法,但似乎没有任何工作.任何人都可以建议我如何获得res文件夹的Uri.任何帮助深表感谢.

解决方法

嗯,实际上很容易.包中资源的基本URI类似于以下可能性:

android.resource://[package]/[resource_id]
android.resource://[package]/[res type]/[res name]

所以以下是可以管理的.

Uri path = Uri.parse("android.resource://com.segf4ult.test/" + R.drawable.icon);
Uri otherPath = Uri.parse("android.resource://com.segf4ult.test/drawable/icon");

您可以在http://androidbook.blogspot.com/2009/08/referring-to-android-resources-using.html找到更多相关信息

Android 项目中文件夹作用(res文件夹详细介绍)

Android 项目中文件夹作用(res文件夹详细介绍)

1. src:存放所有的*.Java源程序。

2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID。

3. assets:可以存放项目一些较大的资源文件,例如:图片、音乐、字体等。

4. res:可以存放项目中所有的资源文件,例如:图片(*.png、*.jpg)、文本等。

5. res/drawable-hdpi:保存高分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。

6. res/drawable-ldpi:保存低分辩率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。

7.res/drawable-mdpi:保存中等分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。

8.res/layout:存放所有的布局文件,主要是用于排列不同的显示组件,在Android程序中要读取此配置。

9.res/values:   存放一些资源文件的信息,用于读取文本资源,在本文件夹之中有一些约定的文件名称:
   · arrays.xml:定义数组数据;(在个这个xml命名的时候可以随便起名,因为最后用的时候只是用到写在这个xml文件中的array的名字)

 

比如在arrays.xml里:

 

[html]  view plain  copy
 
 
  在CODE上查看代码片派生到我的代码片
  1. <string-array name="reboot_item">    
  2. <item>Reboot</item>    
  3. <item>Recovery</item>    
  4. <item>BootLoader</item>    
  5. </string-array>    
  6.   
  7. 在代码里获取:  
  8. String item0 =this.getResources().getStringArray(R.array.reboot_item)[0];  
  9. String item1 = this.getResources().getStringArray(R.array.reboot_item)[1];  
  10. CharSequence[] items = this.getResources().getStringArray(R.array.reboot_item);  

 · dimens.xml:定义尺度,可以使用Resources.getDimension()获得这些资源;有时候我们为了维护一个工程,或者想定义一个button样式,或textView样式,这些样式中包含着文字的大小,背景图片,前置图片等一些资源。而且这个button或textView会在很多地方要用到它,原本我们可以将它的文字大小,图片样式等写在XML中或者代码中。但这样的维护性太差了;一旦要修改的时候,需要挨个文件找,挨个修改。现在我们利用dimens来维护时,只需要修改对应的dimens里定义的值。所有引用它的地方都会自动的修改这样,我们就达到了维护的目的;将要定义的属性写在dimens.xml中,以达到资源重复利用;

 

 

[html]  view plain  copy
 
 
  在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <resources>    
  3.     <dimen name="main_tab_h">80dp</dimen> 设置图片时用dp    
  4.     <dimen name="main_tab_tsize">22sp</dimen> 设置字体大小时用sp    
  5.         
  6.     <dimen name="set_userinfo_prow">100dp</dimen>    
  7.     <dimen name="set_cpwd_prow">100dp</dimen>    
  8. </resources>   

备注:在xml中调用时直接android:layout_height="@dimen/main_tab_h"调用为其设置大小
             在activity中设置时用context.getResource().getDimensource(r.dimen.main_tab_h);即可为其动态设置大小。

 

 

   · strings.xml:定义字符串,可以使用Resources.getString()或Resources.getText()方法获得这些资源;

   · styles.xml:定义显示的样式文件;(如下代码,在调用时用@style/TextView即可)

[html]  view plain  copy
 
 
  在CODE上查看代码片派生到我的代码片
  1. <resources xmlns:android="http://schemas.android.com/apk/res/android">  
  2.     <style name="TextView">  
  3.         <item name="android:textColor">@color/green</item>  
  4.     </style>  
  5. </resources>  

    attrs.xml:(在自定义一个控件的时候,如果定义一些新的属性的时候,会用到这个文件来设置)当中定义的是类的属性,属性是为了能在xml文件中被引用到,换句话说就是指定类中变量(也就是属性的实际作用者)的值。这些属性会在类的构造函数中用到。看过一两个源码就会明白,构造函数中的TypedArray其实就是属性的数组,数组的成员会被赋给类里的成员,完成从xml的初始化。类的构造函数一般有三个,一个是Class(context),这个用于在代码中创建一个类,所以只包含一个上下文;Class(context,attrs)和Class(context, attrs, defStyle)用于从xml创建类的情况。

      ids.xml:为应用的相关资源提供唯一的资源id。id是为了获得xml中的对象而需要的参数,也就是Object=findViewById(R.id.id_name)中的id_name。这些值可以在代码中用android.R.id引用到。
若在ids.xml中定义了ID,则在layout中可如下定义@id/price_edit,否则@+id/price_edit。
使用ids.xml的原因
(1)优化编译效率。
我们知道android的组件必须用一个int类型的id属性来标识其唯一性,id属性必须以@开头的值,例如,@id/abc、@+id/xyz等。
如果使用"@+id/name"形式,当R.java中存在名为name变量时,则该组件会使用该变量的值作为标识。如果不存在该变量,则添加一个新的变量,并为该变量赋相应的值(不会重复)。
当修改完某个布局文件并保存后,系统会自动在R.java文件中生成相应的int类型变量。变量名就是“/”后面的值,例如,@+id/xyz会在R.java文件中生成intxyz =value,其中value是一个十六进制的数。如果xyz在R.java中已经存在同名的变量,就不再生成新的变量,而该组件会使用这个已存在的变量的值。
使用@id/name形式,预先定义的id已经生成,修改配置文件时,也不会引起系统重新生成。
(2)统一管理资源Id。

public.xml——描述的是为attr、id、drawable所指定的一个32的id值,这个值在current.xml文件中会被用到。

当我们对public.xml做了改动后,执行makeupdate-api命令,相应的current.xml就会添加这些改动。

在public.xml中资源数据的定义会影响到current.xml文件,它们分别在frameworks/asecoreesesvalues和framework/aseapicurrent.xml中。

当进行内核文件修改时,需要特别注意public.xml文件的同步,该文档定义了资源文件的二进制兼容性。因此需要小心对待该文件,否则可能会破坏该版本的向后兼容性。

  为了避免破坏兼容性,新的资源需加在同类资源的最后(主要ID值,按照ID值递增)。若是放置在中间会导致随后的同类资源被赋予新的ID值从而破坏兼容性。

添加id的方法:

1)在ids.xml中添加公共id项,在public.xml中也添加相应的id项。这种办法没有兼容性,会与后面的版本产生冲突。

2)在ids.xml中添加公共id项,每一项前面加一行<!– @hide–>的注释,这样就不用在public.xml中添加相应的项了。源码中是的形式,这样current中就不会有相应的段了。

3)在自己写的xml中,使用android:id =“@+id/id_name”的形式,就和在eclipse中一样,搜一下会发现android源码中也有这么用的,这样ids.xml和public.xml都不用改,兼容性我还不确定。

   · colors.xml:定义表示颜色的数据;

[html]  view plain  copy
 
 
  在CODE上查看代码片派生到我的代码片
  1. <resources>  
  2.     <!-- 定义几种常用的颜色 -->  
  3.     <color name="gold">#b89766</color>  
  4.     <color name="white">#FFFFFF</color><!-- 白色 -->  
  5.     <color name="black">#000000</color><!-- 黑色 -->  
  6. </resources>  

10.res/raw:自定义的一些原生文件所在目录,像音乐、视频等文件格式。存放直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID 也可以用,即R.raw.somefilename,Resources.getRawResource()方法可以获得这些资源。

11. res/xml:用户自定义的XML文件,所有的文件在程序运行时编译到应用程序之中,在程序运行时可以使用Resources.getXML()方法获取。

12. res/anim:用于定义动画对象。存放定义了补间动画(tweened animation)或逐帧动画(frame by frame animation)的XML文件。(该目录下也可以存放定义property animations的XML文件,但是最好还是分开存放)

13.res/animator:存放定义了property animations(android 3.0新定义的动画框架)的XML文件

14.res/color/:存放定义了颜色状态列表资源(Color State List Resource)的XML文件

15.res/menu/:存放定义了应用程序菜单资源的XML文件。正确创建文件的方法:new Folder,名字menu,new Other——Android——XML,选择menu类型,填写名称,确定即可。菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用<menu>标签作为根节点。除了<menu>标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是<item>和<group>。

今天关于Android项目中res文件夹的作用android res文件夹的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android Studio – 使用依赖于另一个Android库的Android库构建Android项目、android – 在带有子文件夹的sd上创建一个文件夹、android – 如何获取res文件夹的Uri?、Android 项目中文件夹作用(res文件夹详细介绍)的相关知识,请在本站搜索。

本文标签: