`
wen742538485
  • 浏览: 229345 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android如何读取项目中的图片或文件

阅读更多
1、程序,把Assets中的图像显示出来
try {
    BufferedInputStream bis = new BufferedInputStream(getAssets()
      .open("a.bmp"));
    Bitmap bm = BitmapFactory.decodeStream(bis);
    imageView01.setImageBitmap(bm);
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    System.out.println("==========file not found======");
   }
2、原理:Android中的资源分析
资源是Android应用程序中重要的组成部分。在应用程序中经常会使用字符串、菜单、图像、声音、视频等内容,都可以称之为资源。通过将资源放到与apk文件中与Android应用程序一同发布,在资源文件比较大的情况下,可以通过将资源作为外部文件来使用,我们将分析如何在Android应用程序中存储这些资源。
一、资源的存储
在android中,资源大多都是保存在res目录中,例如布局资源以XML文件的形式保存在res\layout目录中;图像资源保存着res\drawable目录中;菜单资源保存在res\menu目录中。ADT在生成apk文件时,这些目录中的资源都会被编译,然后保存到apk文件中。如果将资源文件放到res\raw目录中,资源将在不编译的情况下放入apk文件中。在程序运行时可以使用InputStream来读取res\raw目录中的资源。
如果使用的资源文件过大,我们可以考虑将资源文件作为外部文件单独发布。Android应用程序会从手机内存或者SD卡读取这些资源文件。
二、资源的种类
从资源文件的类型来划分,我们可以将资源文件划分为XML、图像和其它。以XML文件形式存储的资源可以放在res目录中的不同子目录里,用来表示不同种类的资源;而图像资源会放在res\drawable目录中。除此之外,可以将任意的资源嵌入Androidy应用程序中。比如音频和视频等,一般这些资源放在res\raw目录中。
表1、 Android支持的资源
目录 资源类型 描述
Res\values
XML
保存字符串、颜色、尺寸、类型、主题等资源,可以是任意文件名。对于字符串、颜色、尺寸等信息采用
Key-value形式表示,对于类型、主题等资源,采用其它形式表示
Res\layout
XML
保存布局信息。一个资源文件表示一个View或ViewGroup的布局
Res\menu
XML
保存菜单资源。一个资源文件表示一个菜单(包括子菜单)
Res\anim
XML
保存与动画相关的信息。可以定义帧(frame)动画和补间(tween)动画
Res\xml
XML
在该目录的文件可以是任意类型的XML文件,这些XML文件可以在运行时被读取。
Res\raw
任意类型
在该目录中的文件虽然也会被封装在apk文件中,但不会被编译。在该目录中可以放置任意类型的文件,例如,各种类型的文档、音频、视频文件等
Res\drawable
图像
该目录中的文件可以是多种格式的图像文件,例如,bmp、png、gif、jpg等。在该目录中的图像不需要分辨率非常高,aapt工具会优化这个目录中的图像文件。如果想按字流读取该目录下的图像文件,需要将图像文件放在res\raw目录中。
assets
任意类型
该目录中的资源与res\raw中的资源一样,也不会被编译。但不同的是该目录中的资源文件都不会生出资源ID
三、资源文件的命名
每一个资源文件或资源文件中的key-value对都会在ADT自动生成的R类(在R.java文件中)中找到相对应的ID.其中资源文件名或key-value对中的key就是R类中的java变量名。因此,资源文件名好key的命名首先要符合java变量的命名规则。
除了资源文件和key本身的命名要遵循相应的规则外,多个资源文件和key也要遵循唯一的原则。也就是说,同类资源的文件名或key不能重复。例如,两个表示字符串资源的key不能重复,就算这两个key在不同的XML文件中也不行。
由于ADT在生成ID时并不考虑资源文件的扩展名,因此,在res\drawable、res\raw等目录中不能存在文件名相同,扩展名不同的资源文件。例如在res\drawable目录不能同时放置icon.jpg和icon.png文件。
四、资源使用示例
在Android SDK中不仅提供了大量的系统资源,而且还允许开发人员定制自己的资源。不管是系统资源,还是自定义的资源,一般都会将这些资源放在res目录中,然后通过R类中的相应ID来引用这些资源。接下来将针对于XML类资源的使用进行分析。
XML资源实际上就是XML格式的文本文件,这些文件必须放在res\xml目录中。可以通过Resources.getXml方法获得处理指定XML文件的XmlResourceParser对象。实际上,XmlResourceParser对象处理XML文件的的过程主要是针对不同的状态点处理相应的代码,比如开始分析文档、开始分析标签、分析标签完成等,XmlResourceParser通过调用next方法不断更新当前的状态。
下面的代码,则是展示如何读取res\xml目录中的XML文件的内容,先在res\xml目录中建立一个xml文件。将AndroidManifest.xml文件复制到res\xml目录中,并改名为android.xml。
在准备完XML文件后,在onCreate方法中开始读取XML文件的内容,代码如下:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView=(TextView)findViewById(R.id.textview);
StringBuffer sb=new StringBuffer();
// 获得处理android。xml文件的XmlResourceParser对象
XmlResourceParser xml=getResources().getXml(R.xml.android);
try
{
//切换到下一个状态,并获得当前状态的类型
int eventType =xml.next();
while(true)
{
//文档开始状态
if(eventType == XmlPullParser.START_DOCUMENT)
{
  Log.d("start_document","start_document");
}
//标签开始状态
else if(eventType ==XmlPullParser.START_TAG)
{
  Log.d("start_tag",xml.getName());
  //将标签名称和当前标签的深度(根节点的depth是1,第2层节点的depth是2,类推)
  sb.append(xml.getName()+"(depth:"+xml.getDepth()" ");
  //获得当前标签的属性个数
  int count=xml.getAttributeCount();
  //将所有属性的名称和属性值添加到StringBuffer对象中
  for(int i=0;i<count;i++)
  {
   sb.append(xml.getAttributeName(i)+":
   "+xml.getAttributeValue(i)+"");
  }
  sb.append(")\n");
}
//标签结束状态
else if(eventType ==XmlPullParser.END_TAG)
{
  Log.d("end_tag",xml.getName());
}
//读取标签内容状态
else if(eventType ==XmlPullParser.TEXT)
{
  Log.d("text","text");
}
//文档结束状态
else if(eventType ==XmlPullParser.END_DOCUMENT)
{
  Log.d("end_document","end_document");
  //文档分析结束后,退出while循环
  break;
}
//切换到下一个状态,并获得当前状态的类型
eventType =xml.next();

}
textView.setText(sb.toString());


}
  catch(Exception e)  {}
}
二、如果想读入文件
在使用getAssets().open("anhui.xml")返回输人流之后,就可以以此为参数,后面的处理跟普通的java的处理相同。
分享到:
评论

相关推荐

    android 从assets和res中读取文件

    在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。 介绍...

    Android项目源码获取照片裁剪图片压缩图片工具库.zip

    TakePhoto是一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库,目前最新版本3.0.2。 支持通过相机拍照获取图片 支持从相册选择图片 支持从文件选择图片 支持批量...

    Android项目项目_Gallery从SD卡中获取图片,并显示.rar

    **Android Gallery:从SD卡获取图片并展示.rar文件** 本项目为一款基于Android平台的Gallery应用,用户可从SD卡中检索并查看图片,同时支持.rar格式文件的预览。项目采用Kotlin语言编写,兼容Android Studio开发...

    Android-app.rar

    Android 用handler机制联网获取图片 Android 百宝箱 Android 简单的翻译软件 Android 精美仿开眼视频跨平台App Android 自定义数字密码输入键盘 Android 趣味答题应用 Android 音乐播放器 Android--AA记账助手 ...

    Android用户注册界面简单设计

    首先在布局文件中使用控件的标记来配置所需要的各个控件,然后在 主Activity中获取到该控件,给其添加监听器来监听其操作,最后在控制台输出所操作的内容。 III. 实现步骤 在Eclipse中创建 Android项目,名称为 ...

    android编程(自学资料)

    这个文件列出了应用程序所提供的功能,以后开发好的各种组件需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),还需在该文件中声明使用权限。 default....

    Android读取本地照片和视频相册实例代码

    项目中经常要选择本地照片或者视频的需求,如果去扫描整个SD卡就太耗时间,其实Android系统在启动时就已经把整个设备中的多媒体文件信息(文件名,类型,大小等)都存到了数据库,然后提供了ContentPrivider这个API...

    Android应用源码30套安卓源码合集.zip

    android 获取Gps信息的程序源码.rar Android 高德地图图层效果源码.rar Android中英文电子词典源码(so easy).rar android仿开心网源代码.rar android及时通讯源码:实时对讲机.rar android在线订餐项目源码.rar ...

    Android项目源码AndBase应用开发宝开发框架

    本项目是一个为Android开发者量身打造的一款开源类库产品,您可以在amsoft.cn中获取到最新的代码,示例以及开发文档。tandbase中包含了大量的开发常用手段,如网络下载,Http请求,线程与线程池的管理,图片缓存管理...

    Android状态保存、用户偏好设置保存、通过universal_image_loder网络加载图片并做图片缓存处理Demo

    4、在AndroidManifest.xml文件中加入权限 &lt;uses-permission android:name="android.permission.INTERNET" /&gt; &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt; 和 android:name=".My...

    Android代码-MyUtils

    项目里面提供时间轴转星座|生肖工具、系统存储空间获取工具、文件大小格式化工具、获取指定文件大小工具、数字格式化工具、 Base64编码解码工具、MD5加密工具、AES加密解码工具(支持android端平台加密解密,java端和...

    Android手机天气预报项目报告(1).docx

    解析Android应用程序中获得的列表数据XML文件,对XML文件中的数据实现分离,得到指定的所需要的信息,然后执行存入数据库或显示到页面等相应的处理。 Android的开发组Activity、Intent Receiver、Service、Content ...

    Android ThinkAndroid开发框架.zip

    具有快速构建文件缓存功能,无需考虑缓存文件的格式,都可以非常轻松的实现缓存,它还基于文件缓存模块实现了图片缓存功能, 在android中加载的图片的时候,对oom的问题,和对加载图片错位的问题都轻易解决。...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    安卓游戏-Android studio拼图游戏(可选择系统自带图片,也可从手机相册选择图片,含导出app文件及源码导入方法)

    安卓期末大作业-拼图app(免积分下载)包含项目源码,导出App等等,项目导入即可使用。文章介绍:...

    Android项目源码ThinkAndroid开发框架.zip

    具有快速构建文件缓存功能,无需考虑缓存文件的格式,都可以非常轻松的实现缓存,它还基于文件缓存模块实现了图片缓存功能, 在android中加载的图片的时候,对oom的问题,和对加载图片错位的问题都轻易解决。...

    Android Studio 简易音乐播放器

    Android Studio开发的简易音乐播放器app,读取本地SD卡指定路径的mp3文件进行播放,实现以下功能: 1. 播放、暂停,停止,退出功能; 2. 后台播放功能;(service) 3. 进度条显示播放进度、拖动进度条改变进度功能...

    Android最新资料以及源码

    共10个目标文件,读取中央气象台的天气预报API得到天气数据,由此扩展出Android天气预报源码。虽然获取天气时你首先要知道对应的城市码,有点麻烦,其它的如稳定性与 广阔性也是很一流的,它可以精确到县和区,然后...

    Android 常用六大框架

    (2) ioc模块:android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。 (3) 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。 (4) http模块:通过...

    兼容Android 10+ 系统图片选择器.zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

Global site tag (gtag.js) - Google Analytics