Geekband005第五周笔记分享

本文详细解析了Android中最常用的SharedPreferences数据存储技术,包括其基本概念、使用方法及注意事项。通过实例演示如何获取、保存和读取关键值对,并讨论了与SharedPreferences相关的文件操作及权限管理。同时,文章还对比了Context和Activity获取SharedPreferences的方式,以及如何在SDCard上进行数据写入。此外,还介绍了assets和res/raw目录下文件的存放与访问方法,以及如何使用PagerAdapter和ViewPager实现滑动页面效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据。

获取SharedPreferences的两种方式:
1 调用Context对象的getSharedPreferences()方法
2 调用Activity对象的getPreferences()方法
两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.

使用SharedPreferences保存key-value对的步骤如下:
(1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
(2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
(3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。
(4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。
  
存放数据信息

SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);

Editor editor = sharedPreferences.edit();//获取编辑器

editor.putString("name", "Charming");

editor.putInt("age", 23);

editor.commit();//提交修改
SharedPreferences settings = getSharedPreferences("user", 0);
String name = settings.getString("name","默认值");

往SDCard写入数据权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

在activity中获得路径

File file= this.getFilesDir();//快速得到文件夹
this.getCacheDir();//获得缓存文件夹

当使用上下文保存的时候

FileOutputStream outputStream= context.openFileOutput(fileName, Context.MODE_PRIVATE);//保存
FileInputStream inputStream=context.openFileInput(fileName);//读取

将文件写入sdcard的时候要判断用户时候插入sdcard并且可以读写

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

assets和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,否则将不能读出数据。),这些文件将被打包到APK中应用使用。assets目录下的文件将不做任何处理被打包,而res/raw目录下的文件,会编译为二进制。

读取assets文件
AssetManager a = getAssets() ;
//fileName为assets目录下需要访问的文件的名称
InputStream is = a.open(fileName) ;
//然后就可以通过输入流来读取fileName的内容了。

另外,我们可以通过a.openFd(fileName)得到的AssetFileDescriptor对象来获得fileName文件的信息,例如长度等。我们也可以通过a.list(“”)得到assets目录下的所有文件和子目录名称的数组,通过a.list(SubFolderName), 得到assets/SubFolderName下所有的文件和子目录名称的数组。

读取res/raw文件
InputStream is = getResources().openRawResource(R.id.fileNameID) ;

res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹

PagerAdapter简介
PagerAdapter是android.support.v4包中的类,它的子类有FragmentPagerAdapter, FragmentStatePagerAdapter,这两个adapter都是Fragment的适配器,用于实现Fragment的滑动效果,这两个adapter的使用和区别这次就先不介绍了,等下次有时间再做详细的介绍。
PagerAdapter主要是viewpager的适配器,而viewPager则也是在android.support.v4扩展包中新添加的一个强大的控件,可以实现控件的滑动效果,比如咱们在软件中常见的广告栏的滑动效果,用viewPager就可以实现。今天主要介绍如何使用viewPagr并重写PagerAdapter实现常见广告栏的滑动效果。

PagerAdapter用法简介
首先,如果继承pageradapter,至少必须重写下面的四个方法
1 instantiateItem(ViewGroup, int)
2. destroyItem(ViewGroup, int, Object)
3. getCount()
4. isViewFromObject(View, Object)

public class WelcomePageAdapter extends PagerAdapter {
    private ArrayList<View> viewList;

    public WelcomePageAdapter(ArrayList<View> viewList) {
        this.viewList = viewList;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(viewList.get(position));
        return viewList.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(viewList.get(position));
    }

    @Override
    public int getCount() {
        if (viewList == null) {
            return 0;
        }
        else {
            return viewList.size();
        }
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值