Android的资源引用(3)(Layout、Menu、Style、Them、Attribute、assets)

一、Layout资源时放在/res/layout/目录下面,layout资源下面的根元素通常为布局管理器,在每个布局管理器中定义各种的view.

二、使用菜单menu资源,资源时放在/res/menu/目录下面,资源的根元素通常为

元素,其中menu的用法在,另一片有介绍menu的一些用法

三、样式Style,该资源存放在/res/values/目录下面,样式资源的根元素通常为,该元素中可以包含多个子元素,每一个定义一个样式。

 

元素指定如下的两个属性。

name:样式的名称

parent:样式继承父样式,该样式继承父样式的全部定义,也可以覆盖父样式的指定格式

 

包含多个子元素。

如下:


  
    

    

    
    
    

    

    

    

    

在布局文件中可已使用




    
    

效果图

 

Android的资源引用(3)(Layout、Menu、Style、Them、Attribute、assets)_第1张图片

 

四、主题资源使用,主题资源通常也放在/res/values/目录下面,主题资源的xml文件同样也是以作为根元素,同样也是使用元素来定义主题样式。

主题和样式的区别:

1、主题不能作用于单个的view组件上面,主题应该是对整个应用中的所有activity起作用,或者对指定的activity起作用。

2、主题定义的格式应该是改变外观的格式,比如:窗口标题,窗口边框

 

如:


    
    

使用:



    
    
    

    
        
        
    


    
        
            
            
        
    

五、属性attribute资源的使用:资源也是存放在/res/values目录下面,根元素也是

包含两个属性:

1、attr子元素:定义一个属性

2、declare-styleable子元素,内一个styleable对象就是一组attr属性组合:

Android的资源引用(3)(Layout、Menu、Style、Them、Attribute、assets)_第2张图片

Android的资源引用(3)(Layout、Menu、Style、Them、Attribute、assets)_第3张图片

Android的资源引用(3)(Layout、Menu、Style、Them、Attribute、assets)_第4张图片

 

Android的资源引用(3)(Layout、Menu、Style、Them、Attribute、assets)_第5张图片

 

七、assets资源

       除了上面介绍的各种XML文件、图片文件之外,Android应用可能还需要用到大量其他类型的资源,比如声音资源等。实际上,声音对于Android应用非常重要,选择合适的音效可以让Android应用增色不少。类似于声音文件及其他各种类型的文件,只要Android没有为之提供专门的支持,这种资源都被称为原始资源。Android 的原始资源可以放在如下两个地方。
  1、位于/res/raw/目录下,Android SDK会处理该目录下的原始资源,Android SDK会在R清单类中为该目录下的资源生成一个索引项。
  2、位于/assets/目录下,该目录下的资源是更彻底的原始资源。Android 应用需要通过AssetManager来管理该目录下的原始资源。


  Android SDK会为位于/res/raw/目录下的资源在R清单类中生成一个索引项,接下来在XML文件中可通过如下语法格式来访问它:
  @[: ]raw/file_ name
  在Java代码中则按如下语法格式来访问:
  [.]R.raw.

 

通过上面的索引项,Androiad 应用就可以非常方便地访问/raw目录下的原始资源了。至于获取原始资源之后如何处理,则完全取决于实际项目的需要。AssetManager是一个 专门管理assets目录下原始资源的管理器类,AssetManager提供了如
下两个常用方法来访问Assets资源。
1、InputStream open(String fileName): 根据文件名来获取原始资源对应的输入流。
2、AssetFileDescriptor openFd(String fileName): 根据文件名来获取原始资源对应的AssetFileDescriptor。AssetFileDescriptor 代表了一项原始资源的描述,应用程序可通过AssetFileDescriptor来获取原始资源。

 

实例:

创建raw和assets文件,分别在其中添加两个.mp3的文件,实现音乐播放.

package com.example.asus.summary2;

import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

import java.io.IOException;

/**
 * Created by asus on 2018/7/28.
 */

public class AssetsActivity extends AppCompatActivity implements View.OnClickListener{

    private MediaPlayer mediaPlayer1;
    private MediaPlayer mediaPlayer2;
    protected void onCreate(Bundle saveInstanceState) {
        super.onCreate(saveInstanceState);
        setContentView(R.layout.ass_activity);
        Button raw_m=findViewById(R.id.raw_m);
        Button assets_m=findViewById(R.id.assets_m);
        raw_m.setOnClickListener(this);
        assets_m.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.assets_m:{
                AssetManager manager=getAssets();
                try {
                    AssetFileDescriptor descriptor=manager.openFd("ass.mp3");
                    mediaPlayer2=new MediaPlayer();
                    mediaPlayer2.setDataSource(descriptor.getFileDescriptor());
                    mediaPlayer2.prepare();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                mediaPlayer2.start();
                break;
            }
            case R.id.raw_m:{
                mediaPlayer1=MediaPlayer.create(this,R.raw.ra);
                try {
                    mediaPlayer1.prepare();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                mediaPlayer1.start();
                break;
            }
            default:
                break;
        }
    }
}

 

你可能感兴趣的:(android)