Android应用资源

说到android应用资源,首先想到是/res/下的各种资源,另外一种是放在/assets/目录下的原生资源。首先看assets下资源文件使用,因为assets目录下放置的资源无法直接访问(R.java),需要通过AssetManager来访问,该目录下可以放置音频文件,下面通过播放一首音乐简单的使用assets目录下的资源文件。

在assets目录下放置一首歌曲,然后在布局文件中设置两个button,通过点击button播放和暂停音乐。下面是代码部分:

 start = (Button)findViewById(R.id.start);
        stop = (Button)findViewById(R.id.stop);
        AssetManager assetManager = getAssets();
        try {
            AssetFileDescriptor afd = assetManager.openFd("Klave - EuroDancer.mp3");
            player= new MediaPlayer();
            player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
            player.prepare();
       }catch (Exception e){
           e.printStackTrace();
       }
       start.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               player.start();
           }
       });
       stop.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               player.stop();
           }
       });
这里不介绍AssetManager的具体使用,详细参考API文档。

下面介绍/res/目录下的资源文件使用:
/res/drawable/

关于drawable下图片资源的使用,可以通过R.drawable.xxx直接引用,或者通过:

        Resources resources = getResources();
        Drawable drawable = resources.getDrawable(R.drawable.psb); //获取图片资源
当然还可以通过在xml文件中编写我们需要的drawable资源,可以参考之前的文章 点击打开链接

/res/color/

放置定义不同状态下颜色列表的XML文件,例如:

<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="@color/blue" />
    <item android:state_selected="true" android:color="@color/red" />
    <item android:color="@color/pink" />
</selector>

/res/anim/

放置定义补间动画的XML文件

/res/animator/

放置定义属性动画的XML文件

/res/layout/

这个都很熟悉,布局文件

/res/xml/

放置任意的原生XML文件,这些XML文件可以在java代码中用代码获取

/res/menu/

放置应用程序定义各种菜单的资源,包括选项菜单,子菜单,上下文菜单资源

/res/raw/

放置任意类型的原生资源(比如音频,视频文件),下面会通过获取raw里的音频资源播放。也可以把原生的资源文件放置在assets目录下

/res/values/

下面重点介绍values目录下可以放置哪些资源问价:

arrays.xml   数组资源

例:

 <resources xmlns="http://schemas.android.com/res/apk/android" >
    <array name="wang">   <!-- 定义的是一般类型的数组-->
        <item>安徽</item>
        <item>江苏</item>
        <item>浙江</item>
        <item>北京</item>
        <item>哈尔滨</item>
        <item>上海</item>
        <item>河南</item>
        <item>河北</item>
        <item>山东</item>
        <item>云南</item>
        <item>吉林</item>
        <item>@string/resource</item>  <!-- 也可以从string.xml中直接使用字符  -->
    </array>
    <string-array name="wen">  <!-- 定义的是字符数组 -->
            <item>安徽</item>
            <item>江苏</item>
            <item>浙江</item>
            <item>北京</item>
            <item>哈尔滨</item>
            <item>上海</item>
            <item>河南</item>
            <item>河北</item>
            <item>山东</item>
            <item>云南</item>
            <item>吉林</item>
            <item>@string/resource</item>  <!-- 也可以从string.xml中直接使用字符  -->
    </string-array>
    <integer-array name="chao">  <!-- 定义的是整数的数组 -->
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
        <item>5</item>
    </integer-array>
    </resources>
使用数组资源也是非常简单的:

      Resources resources = getResources();
      String a[] = resources.getStringArray(R.array.wen);  //获取数组资源

colors.xml:

放置单纯颜色值:

<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="black">#fff5ee</color>
</resources>
string.xml:放置自定义字符串

<resources>
    <string name="app_name">project-one</string>
    <string name="resource">diy_os</string>
</resources>
dimen.xml:放置尺寸值
<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
    <dimen name="wid">19dp</dimen>
    <dimen name="hei">10dp</dimen>
</resources>
styles.xml:放置样式

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
上面定义的是应用样式,也可以给一个控件添加样式。
bools.xml:自定义bool资源
<resources>
    <bool name="tr">true</bool>
    <bool name="fa">false</bool>
</resources>
integers.xml:自定义整型资源
<resources>
    <integer name="wang">1</integer>
    <integer name="wen">2</integer>
    <integer name="chao">3</integer>     <!---定义的整数的资源-->
</resources>
下面通过一个demo来学习values目录下面的资源文件:
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.project_one.MainActivity">
    <Button
        android:id="@+id/start"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="播放音乐"
        android:background="@color/colorPrimary" />
    <Button
        android:id="@+id/stop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="播放音乐"
        android:background="@color/redredred" />
    <Button
        android:id="@+id/rawstart"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="播放音乐"
        android:background="@color/colorPrimaryDark" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/redredred"
android:text="Hello World!" />
<ImageView
android:id="@+id/image"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerHorizontal="true"/>
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/wang" />  <!--这样可以给ListView设置数据 通过arrays.xml来设置-->
</LinearLayout>
java代码:
public class MainActivity extends Activity {
    private ImageView imageView;
    private TextView text;
    private ListView listview;
    private Button start;
    private Button stop;
    private Button rawstart;
    private MediaPlayer player;
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = (ImageView)findViewById(R.id.image);
        text = (TextView)findViewById(R.id.text1);
        listview = (ListView)findViewById(R.id.listview);
        start = (Button)findViewById(R.id.start);
        stop = (Button)findViewById(R.id.stop);
        rawstart = (Button)findViewById(R.id.rawstart);
        final MediaPlayer rawplayer = MediaPlayer.create(this,R.raw.klave);  //从raw目录下获取音频资源
        AssetManager assetManager = getAssets();
        try {
           AssetFileDescriptor afd = assetManager.openFd("Klave - EuroDancer.mp3");
            player= new MediaPlayer();
            player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
            player.prepare();
       }catch (Exception e){
           e.printStackTrace();
       }
       start.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               player.start();
           }
       });
       stop.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               player.stop();
           }
       });
      rawstart.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
             rawplayer.start();
          }
      });

        Resources resources = getResources();
        String res = resources.getString(R.string.app_name); //获取字符串资源
        Log.d("dddddd",res);

        Drawable drawable = resources.getDrawable(R.drawable.psb); //获取图片资源

        imageView.setImageDrawable(drawable);

        String a[] = resources.getStringArray(R.array.wen);  //获取数组资源
       StringBuilder builder = new StringBuilder();
       for(String b :a){
           builder.append(b);  //遍历数组  然后把每一个字符串都加载build中   然后设置在TextView中
       };
       text.setText(builder.toString() + String.valueOf(R.bool.fa));


       listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
               Toast.makeText(MainActivity.this,"你好",Toast.LENGTH_LONG).show();
           }
       });

    }
}
效果:
 
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值