Geekband005第五周笔记分享

来源:互联网 发布:淘宝势力周多久一次 编辑:程序博客网 时间:2024/04/30 10:43

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;    }}
0 0
原创粉丝点击