在android 1.6+的版本中增加了Viewpaper类,通过这个类我们可以很简单的实现左右滑动手指切换页面,Viewpaper需要设置PaperAdapter,在PaperAdapter中实现添加或删除View的功能,具体代码:

public class AwesomePagerActivity extends Activity {    private ViewPager awesomePager;private Context cxt;private AwesomePagerAdapter awesomeAdapter;private LayoutInflater mInflater;private List<View> mListViews;/** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        cxt = this;                awesomeAdapter = new AwesomePagerAdapter();        awesomePager = (ViewPager) findViewById(R.id.awesomepager);        awesomePager.setAdapter(awesomeAdapter);                mListViews = new ArrayList<View>();        mInflater = getLayoutInflater();        mListViews.add(mInflater.inflate(R.layout.layout1, null));        mListViews.add(mInflater.inflate(R.layout.layout2, null));        mListViews.add(mInflater.inflate(R.layout.layout3, null));            }        private class AwesomePagerAdapter extends PagerAdapter{@Overridepublic int getCount() {return mListViews.size();}    /**     * Create the page for the given position.  The adapter is responsible     * for adding the view to the container given here, although it only     * must ensure this is done by the time it returns from     * {@link #finishUpdate()}.     *     * @param container The containing View in which the page will be shown.     * @param position The page position to be instantiated.     * @return Returns an Object representing the new page.  This does not     * need to be a View, but can be some other container of the page.     */@Overridepublic Object instantiateItem(View collection, int position) {((ViewPager) collection).addView(mListViews.get(position),0);return mListViews.get(position);}    /**     * Remove a page for the given position.  The adapter is responsible     * for removing the view from its container, although it only must ensure     * this is done by the time it returns from {@link #finishUpdate()}.     *     * @param container The containing View from which the page will be removed.     * @param position The page position to be removed.     * @param object The same object that was returned by     * {@link #instantiateItem(View, int)}.     */@Overridepublic void destroyItem(View collection, int position, Object view) {((ViewPager) collection).removeView(mListViews.get(position));}@Overridepublic boolean isViewFromObject(View view, Object object) {return view==(object);}    /**     * Called when the a change in the shown pages has been completed.  At this     * point you must ensure that all of the pages have actually been added or     * removed from the container as appropriate.     * @param container The containing View which is displaying this adapter's     * page views.     */@Overridepublic void finishUpdate(View arg0) {}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}        }        }

虽然通过修改源码中launcher类也可以实现类似功能,不过比起重写view这种体力活显然这种方法更环保。

更多相关文章

  1. @功能 中用到 android EditText插入字符串到光标所在位置
  2. Android中Toolbar随着ScrollView滑动透明度渐变效果实现
  3. Android(安卓)VideoView本地视频播放
  4. Android(安卓)开发中uboot传给Kernel 的androidboot.xxx命令行参
  5. OpenGL ES2.0实现手指滑动平移、双指缩放Android
  6. Gradle for Android(安卓)第六篇( 测试)
  7. Android(安卓)NestedScroll嵌套滑动机制解析
  8. Android录像和拍照功能实例
  9. Android(安卓)滑动效果进阶篇(五)—— 3D旋转

随机推荐

  1. android六大布局和UI组件
  2. Android——一分钟学会使用实时模板Live
  3. Android(安卓)自定义标题栏
  4. Android(安卓)ListView侧滑删除
  5. Android开发如何调试Service
  6. Recyclerview 点击效果,可以使用
  7. MediaRecorder创建Surface流程学习
  8. android 文件读取(assets、raw)
  9. Android(安卓)上使用FFmpeg一些错误记录
  10. Android(安卓)android.intent.category解