您的位置:首页 > 移动开发 > Android开发

android应用开发笔记-xml数据资源使用

2014-09-30 16:15 465 查看
android中的资源文件存放在两个文件中:res和assets.assets中主要保存一般的原生文件,如MP3文件,android程序不能直接访问,必须通过AssetManager类以二进制流的形式来读取.而res中的资源可以通过R资源类直接访问.res目录下又有anim、drawable、layout、menu、raw、values和xml文件夹,分别用来保存动画、图片、布局文件、菜单、原生文件、常量值和XML文件夹.values文件夹下又分为:arrays(数组)、colors(颜色)、dimens(尺寸)、styles(样式)、string(字符串).下面开始逐个介绍各个资源的访问方式。

注:除了访问自己定义的资源,系统为我们定义了很多资源,可以通过android.R.资源文件类型.资源文件名称来获取。比如android.R.string.cancel就是“取消”,我们就没必要自己再在string文件中重复定义了。

一、常量资源访问

arrays、colors、dimens、string等常量的访问方式是相同的,也很简单,下面只介绍下访问方式,不写实例代码了,主要篇幅留给其他资源访问的介绍。

资源定义:

<resources>

<子元素 name=“元素名称”> values</子元素>

</resources>

资源获取:

java代码中:R.子元素.子元素名称(如:R.color.blue)

xml中:@[package:]子元素/子元素名称(如:@color/blue)

二、使用原始XML资源

主要方法:getResources().getXml()获得XmlResourceParser对象。

直接上代码:





test.xml代码:

<?xml version="1.0"encoding="utf-8"?>

<resources>

<customer name="tom" age="20" gender="male"email="jxt@yeah.net"/>

<customer name="jim" age="22" gender="female"email="jxt2012@yeah.net"/>

</resources>
main.xml代码:

<?xml version="1.0"encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

   android:orientation="vertical"

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   >

<Button

 android:id="@+id/testBtn" 

   android:layout_width="fill_parent"

   android:layout_height="wrap_content"

   android:text="get xml res"

   />

<TextView 

 android:id="@+id/testTv"

   android:layout_width="fill_parent"

   android:layout_height="wrap_content"

   android:text="@string/hello"

   />

</LinearLayout>
XmlResActivity代码:

package com.pdf.res;

import java.io.IOException;

import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;

import android.content.res.Resources;

import android.content.res.XmlResourceParser;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

public class XmlResActivity extends Activity {

 Button mButton;

 TextView mTextView;

   @Override

    public voidonCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

       mButton=(Button)this.findViewById(R.id.testBtn);

       mTextView=(TextView)this.findViewById(R.id.testTv);

       mButton.setOnClickListener(new OnClickListener(){

   @Override

   public voidonClick(View v) {

    intcounter=0;

    StringBuildersb=new StringBuilder("");

    Resourcesr=getResources();

    XmlResourceParserxrp=r.getXml(R.xml.test);

    try{

     while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){

      if(xrp.getEventType()==XmlResourceParser.START_TAG){

       Stringname=xrp.getName();

       if(name.equals("customer")){

        counter++;

        sb.append("第"+counter+"条客户消息:");

        sb.append(xrp.getAttributeValue(0)+"\n");

        sb.append(xrp.getAttributeValue(1)+"\n");

        sb.append(xrp.getAttributeValue(2)+"\n");

        sb.append(xrp.getAttributeValue(3)+"\n\n");

       }elseif(xrp.getEventType()==XmlResourceParser.END_TAG){

        

       }elseif(xrp.getEventType()==XmlResourceParser.TEXT){

        

       }

      }

      xrp.next();

     }

     mTextView.setText(sb);

    }catch(XmlPullParserExceptione){

     e.printStackTrace();

    }catch(IOExceptione){

     e.printStackTrace();

    }    

   }});

    }

}

程序截图:





注 :上文转自别处  刚刚自己试了试 发现通过activity.getResources().getString(R.dimen.margins)就可得到xml文件里面指定的字段 activity 为上下文对象   margins  为我想要在xml文件里面获取的填充值  如<string name="margins">10dip</string>   得到的为10dip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: