android下面res目录
目录Directory |
资源类型Resource Types |
res/anim/ |
XML文件,它们被编译进逐帧动画(frame by frame animation)或补间动画(tweened animation)对象 |
res/drawable/ res/drawable-hdpi/ res/drawable-ldpi/ res/drawable-mdpi/ res/drawable-xhdpi/ res/drawable-xxhdpi/ res/drawable-zh/ res/drawable-en-rUS-port-hdpi/ |
.png、.9.png、.jpg文件,它们被编译进以下的Drawable资源子类型中: 要获得这种类型的一个资源,可以使用Resource.getDrawable(id) 位图文件 9-patches(可变尺寸的位图) 为了获取资源类型,使用mContext.getResources().getDrawable(R.drawable.imageId) 注意:放在这里的图像资源可能会被aapt工具自动地进行无损压缩优化。比如,一个真彩色但并不需要256色的PNG可能会被转换为一个带调色板的8位PNG。这使得同等质量的图片占用更少的资源。所以我们得意识到这些放在该目录下的二进制图像在生成时可能会发生变化。如果你想读取一个图像位流并转换成一个位图(bitmap),请把图像文件放在res/raw/目录下,这样可以避免被自动优化。 drawable- hdpi、drawable- mdpi、drawable-ldpi的区别: (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854) (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480) (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320) 系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。 在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。 Aphone一般到drawable-hdpi去取图片,drawable-hdpi没有图片再到drawable-mdpi去取图片,而后再到drawable-ldpi取图片 Apad一般到drawable-mdpi去取图片,drawable-hdpi没有图片再到drawable-ldpi去取图片 横屏含有drawable-land- hdpi、drawable-land- mdpi、drawable-land-ldpi的区别: Aphone一般到drawable-land-hdpi去取图片,drawable-land-hdpi没有图片再到drawable-land-mdpi去取图片,而后再到drawable-land-ldpi取图片,而后才会到drawable-hdpi去取图片,drawable-hdpi没有图片再到drawable-mdpi去取图片,而后再到drawable-ldpi取图片 Apad一般到drawable-land-mdpi去取图片,drawable-land-hdpi没有图片再到drawable-land-ldpi去取图片,而后才会到drawable-mdpi去取图片,drawable-hdpi没有图片再到drawable-ldpi去取图片 -finger 用于触摸屏的设备 -hdpi 近似于240dpi的高级显示密度的屏幕 -mdpi 近似于160dpi的中级显示密度的屏幕 -ldpi 近似于120dpi的低级显示密度的屏幕 -land 横屏显示 -port 竖屏显示 -long 比较长的屏幕,例如WQVGA(432×240), WVGA(800×480), FWVGA(854×480) drawable-en:英文设置下的图片资料,drawable-zh中文设置下的图片资料。 //竖屏 :drawable-en-rUS-port-hdpi 建树这些文件夹是有次序的。即按优先级别分列的,见下表。所以建树文件夹时一般从左到右的分列其优先级别如:drawable-en-rUS-land-mdpi |
res/layout/
res/layout-land/
res/layout-port/
res/layout-land-1024x720 /
res/layout-port-976x768 /
|
如下目录:
layout
layout-land
layout-port
layout-land-1024x720 //1024x768横屏
layout-port-976x768 //1024x768竖屏
注意事项:
在android3.0之前版本,要适配指定的分辨率,需将layout文件夹定义成如下名称:
layout
layout-1024x768
layout-1024x600
layout-1280x768
但是,在android3.0后,要适配如上的分辨率,需将高度减去48像素,即底部状态栏的高度,android方可识别。针对以上分辨率,android4.0的layout文件夹应该定义为如下名称:
layout
layout-1024x720
layout-1024x552
layout-1280x720
还有一种情况 如果是平板,有可能是竖屏的,需要是
layout
layout-976x768
layout-976x600
layout-976x768
格式如上。用法与正常的相同。手机会根据分辨率,自己找对应的布局,不用控制,
只需在res下按上述方式,新建对应layout就可以。
注意的是分辨率中大的数字必须写到前面,否则会产生语法错误。
如layout-768x1024 的写法是错误的。
注意格式,【layout】-【port/land】-【长度x宽度】
如何限定横屏或者竖屏?
有些人讨厌玩手机的时候横竖屏来回的切换,有些应用也限定了应用程序只使用横屏或者只使用竖屏,即使手机设置了“自动切换横竖屏”。比如“水果忍者”是不能竖屏的(双人模式除外了) 解决办法:只需要在AndroidManifest.xml的Activity标签中加入:android:screenOrientation="landscape" android:screenOrientation="landscape"表示横屏或android:screenOrientation="protrait"表示竖屏 这样,所设定的应用程序就只能是横屏或者竖屏了 |
res/values/ res/values-ldpi/ res/values-en-rUS/ |
可以被编译成很多种类型的资源的XML文件。 注意: 不像其他的res/文件夹,它可以保存任意数量的文件,这些文件保存了要创建资源的描述,而不是资源本身。XML元素类型控制这些资源应该放在R类的什么地方。 尽管这个文件夹里的文件可以任意命名,不过下面使一些比较典型的文件(文件命名的惯例是将元素类型包含在该名称之中): array.xml 定义数组 colors.xml 定义color drawable和颜色的字符串值(color string values)。使用Resource.getDrawable()和Resources.getColor()分别获得这些资源。 dimens.xml定义尺寸值(dimension value)。使用Resources.getDimension()获得这些资源。 strings.xml定义字符串(string)值。使用Resources.getString()或者Resources.getText()获取这些资源。getText()会保留在UI字符串上应用的丰富的文本样式。 styles.xml 定义样式(style)对象。 以添加一个 英语(美国):values-en-rUS 为例 1、把下面左列表中的Region添加到左边的列表里面,并在Region输入框里输入us 2、这时,上面的消息提示:如果用Region的话,需要使用语言项,和Region一样,我们把Language也添加到右面的列表里面,填入en 3、点击Finish按钮,资源文件就会建好了,目录:/res/values-en-rUS(其实上面一大堆操作,就是为生成这个目录) android多国语言文件夹文件汇总如下: Arabic, Egypt (ar_EG) -----------------------------阿拉伯语,埃及 |
res/xml/ |
任意的XML文件,在运行时可以通过调用Resources.getXML()读取。 |
res/raw/ |
直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。 |
2.自动生成的R class
3. 在代码中使用资源
- // Load a background for the current screen from a drawable resource.
- this.getWindow().setBackgroundDrawableResource(R.drawable.my_background_image);
- // WRONG Sending a string resource reference into a
- // method that expects a string.
- this.getWindow().setTitle(R.string.main_title);
- // RIGHT Need to get the title from the Resources wrapper.
- this.getWindow().setTitle(Resources.getText(R.string.main_title));
- // Load a custom layout for the current screen.
- setContentView(R.layout.main_screen);
- // Set a slide in animation for a ViewFlipper object.
- mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
- R.anim.hyperspace_in));
- // Set the text on a TextView object.
- TextView msgTextView = (TextView)findViewByID(R.id.msg);
- msgTextView.setText(R.string.hello_message);
- //在屏幕上显示标准应用程序的图标
- public class MyActivity extends Activity {
- public void onStart() {
- requestScreenFeatures(FEATURE_BADGE_IMAGE);
- super.onStart();
- setBadgeResource(android.R.drawable.sym_def_app_icon);
- }
- }
- //应用系统定义的标准"绿色背景"视觉处理
- public class MyActivity extends Activity
- public void onStart() {
- super.onStart();
- setTheme(android.R.style.Theme_Black);
- }
- }
4. xml文件内引用资源
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="hello">Hello World, HelloDemo!</string>
- </resources>
5. 替换资源(为了可替换的资源和配置)
6. Color Value
- <color name="color_name">#color_value</color>
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <color name="opaque_red">#f00</color>
- <color name="translucent_red">#80ff0000</color>
- </resources>
7.Color Drawables
- <drawable name="color_name">color_value</drawable>
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <drawable name="opaque_red">#f00</drawable>
- <drawable name="translucent_red">#80ff0000</drawable>
- </resources>
8. 图片
9. dimension
- <dimen name="dimen_name">dimen_value单位</dimen>
Java: float dimen = Resources.getDimen(R.dimen.some_name)
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <dimen name="one_pixel">1px</dimen>
- <dimen name="double_density">2dp</dimen>
- <dimen name="sixteen_sp">16sp</dimen>
- </resources>
10. string
- //不使用转义符则需要用双引号包住整个string
- <string name="good_example">"This'll work"</string>
- //使用转义符
- <string name="good_example_2">This\'ll also work</string>
- //错误
- <string name="bad_example">This won't work!</string>
- //错误 不可使用html转义字符
- <string name="bad_example_2">XML encodings won't work either!</string>
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="simple_welcome_message">Welcome!</string>
- <string name="styled_welcome_message">We are <b><i>so</i></b> glad to see you.</string>
- </resources>
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textAlign="center"
- android:text="@string/simple_welcome_message"/>
- // Assign a styled string resource to a TextView on the current screen.
- CharSequence str = getString(R.string.styled_welcome_message);
- TextView tv = (TextView)findViewByID(R.id.text);
- tv.setText(str);
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="search_results_resultsTextFormat">%1$d results for <b>&quot;%2$s&quot;</b></string>
- </resources>
- //title是我们想赋值给%2$s的字符串
- String escapedTitle = TextUtil.htmlEncode(title);
- String resultsTextFormat = getContext().getResources().getString(R.string.search_results_resultsTextFormat);
- String resultsText = String.format(resultsTextFormat, count, escapedTitle);
- CharSequence styledResults = Html.fromHtml(resultsText);
11. assets文件夹资源的访问
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作
以下为从Raw文件中读取:
代码
public String getFromRaw(){
try {
InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
BufferedReader bufReader = new BufferedReader(inputReader);
String line="";
String Result="";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
} catch (Exception e) {
e.printStackTrace();
}
}
以下为直接从assets读取
代码
public String getFromAssets(String fileName){
try {
InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );
BufferedReader bufReader = new BufferedReader(inputReader);
String line="";
String Result="";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
} catch (Exception e) {
e.printStackTrace();
}
}
当然如果你要得到内存流的话也可以直接返回内存流!
res/raw和assets的相同点:
1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。
*res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹
转载于:https://www.cnblogs.com/zoufeng/p/5735524.html
android下面res目录相关推荐
- Android开发笔记(二十四)res目录的结构与配置
res目录结构 res是Android项目工程中存放各类的目录,主要包括布局.图形与配置等等.res的子目录主要有: anim : 存放动画的描述文件 drawable : 存放各类图形的描述文件,包 ...
- Android程序的目录结构分析——manifests目录、Java目录、res目录
manifests目录 该目录下的AndroidManifests.xml文件是项目的系统配置文件,又叫做清单文件,每个项目都必须含有该文件.它为Android系统提供了启动运行项目时必须的基本信息. ...
- 在android工程中,res目录下又有anim、drawable、layout、menu、raw、values和xml文件夹,分别用来保存?...
res目录主要是存放资源文件的!layout 布局 这个就是你经常看到的与用户交互的界面的 xml 文件,就是各个 view 的排列和嵌套,没什 么好说的啦 风格和主题. 风格主要是指 view 的显 ...
- Android Gradle 配置Java src目录、Res 目录
工程目录: 我们看到,在Java目录里面,每一个目录下都是一个模块,每个模块都有自己的res目录. Gradle 配置如下: def srcDirs = ['application','applica ...
- Android项目的目录结构
引言 本篇将通过HelloWorld项目来介绍Android项目的目录结构.本文的主要主题如下: 1.HelloWorld项目的目录结构 1.1.src文件夹 1.2.gen文件夹 1.3.Andro ...
- Android开发:程序目录结构详解:activity主要方法等
HelloWorld程序的目录结构概述 我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹.gen文件夹.Android文件夹.assets.res文件夹. AndroidM ...
- 【Android开发】Android应用程序目录结构
原文:http://android.eoe.cn/topic/summary Android开发之旅:组件生命周期吴秦 Android开发之旅:HelloWorld项目的目录结构 * HelloWor ...
- android下raw目录的作用,Android 之 assets目录和raw目录
Android 中存在assets目录和raw目录,它们既有相似之处又有所不同. 一.共同点: 目录下的资源会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式. 二.区别 1. ...
- android 程序的目录,Android应用程序目录
原标题:Android应用程序目录 第一个Android应用程序 1.打开Android Studio主面板 2.Start a new Android Studio project 3.填写Proj ...
最新文章
- python timber_如何使用Timber更有效地记录日志
- java接口的定义及使用细节
- win7安装gtp磁盘_GPT转MBR分区格式安装win7/win10系统教程
- Output Operations on DStreams
- 【译】node js event loop part 1.1
- 克隆ubuntu硬盘_使用Ubuntu Live CD克隆硬盘
- spring 多数据源- 原理
- 高级转录组分析和R数据可视化第十一期(报名线上课还可免费参加线下课)
- android中的add方法,Android中Fragment怎么addView?
- 沪教版神奇的机器人分段_神奇的机器人课文教学设计
- AD中按Y使器件竖直方向上镜像翻转
- dram和nand哪个难生产_终于有人说清楚了什么是DRAM、什么是NAND Flash
- 小米线刷工具 MiFlash 提示长度不能小于 0 参数名 length,无法读取设备解决方法
- 未能在sysindexes中找到数据库ID11中对象ID1的索引ID1对应的行,请对sysindexes运行
- mysql中chr_Chr()和chrb()的含义
- 待到凤凰花开季,惟愿前程皆似锦
- 复杂系统理论解释了Covid为何粉碎世界
- Texpad for Mac v1.9.6 中文版 专业的LaTeX编辑器
- matlab曲面的最小值,MATLAB中标准三维曲面
- 余三码 2020-12-30
热门文章
- Spring Security(12)——Remember-Me功能
- CSS实现div填满剩余高度
- 院校情报福州大学计算机考研分析,福州大学情报学考研
- C++屏蔽map自动排序
- 3GPP TS 23502-h20 中英文对照 | 4.4.1.3 N4 Session Modification procedure
- R语言和医学统计学:非参数检验的补充
- ENVI系列--使用矢量文件裁剪目标区域
- 低学历逆袭难,真的只是不够努力吗?
- 【kali-漏洞利用】(3.4)免杀Payload 生成工具(下):Veil后门使用、监听失败原因
- STM32F4驱动NEC协议的红外接收头