Assets的应用和raw的比较

res/raw和assets的相同点:
1.两者目录下的文件在打包后会原封不动的保存到apk包中,不会被编译成二进制。
2.两者目录下的文件都不能被修改,如果需要修改,需要先把文件拷贝到存储器里。
res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.raw.filename:assets文件夹的文件不会被映射到R.java中,访问的时候需要AssetsManger类。
2.res/raw不可以有目录结构。而assets则可以有目录结构,也就是assets目录下可以在建立文件夹。
Assets的事例:
public class MainActivity  extends Activity {
    private RadioGroup  radioGroup ;
    private ImageView  imageView ;
    private AssetManager  am ;
    @Override
    protected void  onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState) ;
        setContentView(R.layout. activity_main) ;
        imageView =(ImageView) findViewById(R.id. image_view) ;
        am = getAssets() ;
        radioGroup = (RadioGroup)findViewById(R.id. radio_btn) ;
        radioGroup.setOnCheckedChangeListener( new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void  onCheckedChanged(RadioGroup group , int checkedId) {
                switch (checkedId){
                    case R.id. btn_1:
                        Time time =  new Time( "angry") ;
                        time.start() ;
                        break;
                    case R.id. btn_2:
                        Time time2 =  new Time( "cymbal") ;
                        time2.start() ;
                        break;
                    case R.id. btn_3:
                        Time time3 =  new Time( "drink") ;
                        time3.start() ;
                        break;
                    case R.id. btn_4:
                        Time time4 =  new Time( "eat") ;
                        time4.start() ;
                        break;
                    case R.id. btn_5:
                        Time time5 =  new Time( "fart") ;
                        time5.start() ;
                        break;
                    case R.id. btn_6:
                        Time time6 =  new Time( "foot_right") ;
                        time6.start() ;
                        break;
                    case R.id. btn_7:
                        Time time7 =  new Time( "foot_left") ;
                        time7.start() ;
                        break;
                    case R.id. btn_8:
                        Time time8 =  new Time( "knockout") ;
                        time8.start() ;
                        break;
                    case R.id. btn_9:
                        Time time9 =  new Time( "pie") ;
                        time9.start() ;
                        break;
                    case R.id. btn_10:
                        Time time10 =  new Time( "scratch") ;
                        time10.start() ;
                        break;
                    case R.id. btn_11:
                        Time time11 =  new Time( "stomach") ;
                        time11.start() ;
                        break;
                }
            }
        }) ;
    }
    Handler  handler new Handler(){
        @Override
        public void  handleMessage(Message msg) {
            super.handleMessage(msg) ;
            switch (msg. what){
                case  1:
                    imageView.setImageBitmap((Bitmap) msg. obj) ;
                    break;
            }
        }
    };
Assets根下的文件名:
    private String[]  getFileName(String name){
        String[] files =  null;
        try {
            files =  am.list(name) ;
            Log. d( "--->" , ""+files. length) ;
       catch (IOException e) {
            e.printStackTrace() ;
        }
        return files ;
    }
Assets根下的每一项里面的内容:
    private Bitmap  getFileBitmap(String fileName){
        Bitmap bitmap ;
        InputStream in =  null;
        try {
            in =  am.open(fileName) ;
       catch (IOException e) {
            e.printStackTrace() ;
        }
        bitmap = BitmapFactory. decodeStream(in) ;
        return bitmap ;
    }
    public class Time  extends Thread{
        private String  path ;
        public Time(String path){
            this. path = path ;
        }
        @Override
        public void  run() {
            super.run() ;
            String[] imageName = getFileName( path) ;
            try {
                for ( int i= 0 ;i<imageName. length ;i++){
                    sleep(150);
在get里面填写的是路径:
                    Bitmap bitmap = getFileBitmap( path+ "/"+imageName[i]) ;
                    Message msg =  new Message() ;
                    msg. what 1 ;
                    msg. obj = bitmap ;
                    handler.sendMessage(msg) ;
                }
            }  catch (InterruptedException e) {
                e.printStackTrace() ;
            }

        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值