Android学习总结,第五周

SharedPreferences

sharedPreferences在Android中地位为一个轻量级的数据持久化技术,它通过生成一个XML文件来保存所需要的信息,保存地址为data/data/包名/shared_prefs/文件名.xml。
使用SharedPreferences:

public static final String INFO = "info";
SharedPreferences firstSharedPreferences = getSharedPreferences(INFO,MODE_PRIVATE);

上述代码定义出一个SharedPreferences对象firstSharedPreferences,再调用SharedPreferences的Edit()方法来获得一个Editor对象,再用这个Editor对象编辑SharedPreferences。

SharedPreferences firstSharedPreferences = getSharedPreferences(INFO,MODE_PRIVATE);
Editor mEditor = firstSharedPreferencse.edit();
mEditor.putBoolean(IS_OPEN, true);
mEditor.apply();

这里的Editor对象可以直接用putXXX()方法来放入数据,然后在需要时候在用SharedPreferencse的getXXX()方法获得数据信息。注意:在用Editor对象存入数据时,需使用Editor.commit或者Editor.apply方法确认所放入的数据。
apply()和commit()方法不同点:apply()是使用异步方式写入数据,而commit()是同步写入,则commit()可能导致主线程堵塞,如果没有特殊需要,推荐使用apply()方法提交数据。
取出数据:

Boolean mIsOpen = firstSharedPreferences.getBoolean(IS_OPEN, false);

ViewPager控件的简单用法

ViewPager可以用于实现侧滑效果,在许多app中的引导页就是使用ViewPager实现的。
首先在布局文件中定义一个ViewPager控件:

<android.support.v4.view.ViewPager
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/view_pager">
        <android.support.v4.view.PagerTitleStrip
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/pager_title_strip">
       </android.support.v4.view.PagerTitleStrip>
</android.support.v4.view.ViewPager>

因为ViewPager封装在android.support.v4.view中,引用时需要加上包名。
这里的PagerTitleStrip用于控制ViewPager的标题。
在代码中定义ViewPager:

//mViewPager,PagerTitleStrip 已定义为全局变量
mViewPager = (ViewPager) findViewById(R.id.view_pager);
PagerTitleStrip pagerTitleStrip= (PagerTitleStrip) findViewById(R.id.pager_title_strip);
mViewPager.setAdapter(new MyAdapter());
class MyAdapter extends PagerAdapter(){
}

注意:ViewPager需和PagerAdapter配合使用,就像ListView需要和Adapter配合使用一样,将数据放入PagerAdapter中,然后在用ViewPager来显示出来。
这里的MyAdpater继承了PagerAdapter。继承PagerAdapter必须要重写里面的4个方法:
public int getCount(); 用于返回View的数量
public boolean isViewFromObject(View view, Object object); 用于判断传入的view和object是否为同一个对象。
public void destroyItem(ViewGroup container, int position, Object object); 用于销毁对应的项目
public Object instantiateItem(ViewGroup container, int position); 用于初始化对应的页面

定义放入ViewPager中的View视图

View view1 = LayoutInflater.from(this).inflate(R.layout.tab1,null);
View view2 = LayoutInflater.from(this).inflate(R.layout.tab2,null);
View view3 = LayoutInflater.from(this).inflate(R.layout.tab3, null);
mButton = (Button) view3.findViewById(R.id.skip_button);
mViewList = new ArrayList<View>();
mViewList.add(view1);
mViewList.add(view2);
mViewList.add(view3);

MyAdapter中具体的定义:

   class MyAdapter extends PagerAdapter{

        @Override
        public int getCount() {
            return mViewList.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

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

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

ViewPager除了可以直接显示一个页面,也可以配合Fragment进行开发。更多内容将在后期更新。

你可能感兴趣的:(Android学习总结,第五周)