天天看點

viewpaper 抽屜

<a href="http://bigcat.easymorse.com/wp-content/uploads/2011/09/image2.png" target="_blank">&lt;ignore_js_op&gt;</a>

viewpaper 抽屜

效果和ViewGroup一樣,但是實作過程更簡單.新版的Android Market和Google+都是用了ViewPager.

<a href="http://bigcat.easymorse.com/wp-content/uploads/2011/09/image3.png" target="_blank">&lt;ignore_js_op&gt;</a>

viewpaper 抽屜

說一下實作過程:

工程目錄如下:

<a href="http://bigcat.easymorse.com/wp-content/uploads/2011/09/image4.png" target="_blank">&lt;ignore_js_op&gt;</a>

viewpaper 抽屜

MyPagerActivity的onCreate方法如下:

@Override 

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    initPageContent(); 

    awesomeAdapter = new MyPagerAdapter(); 

    awesomePager = (ViewPager) findViewById(R.id.awesomepager); 

    awesomePager.setAdapter(awesomeAdapter); 

}

複制代碼

其中main.xml布局檔案引入了ViewPager:

&lt;linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:orientation="vertical" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent" 

    android:background="#a4c639"&gt; 

&lt;android.support.v4.view.viewpager 

    android:layout_width="match_parent" 

    android:layout_height="match_parent" 

    android:id="@+id/awesomepager"/&gt; 

MyPagerAdapter繼承了PagerAdapter:

private class MyPagerAdapter extends PagerAdapter{

        @Override 

        public int getCount() { 

            return imageS.length; 

        }

        /** 

         * 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. 

         */ 

        public Object instantiateItem(View collection, int position) {

            View view = getLayoutInflater().inflate(R.layout.page,null); 

            ImageView imageView =(ImageView) view.findViewById(R.id.imageId); 

            imageView.setImageDrawable(imageS[position]); 

            ((ViewPager) collection).addView(view,0); 

            return view; 

         * 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)}. 

        public void destroyItem(View collection, int position, Object view) { 

            ((ViewPager) collection).removeView((View) view); 

        public boolean isViewFromObject(View view, Object object) { 

            return view==((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. 

        public void finishUpdate(View arg0) {}

        public void restoreState(Parcelable arg0, ClassLoader arg1) {}

        public Parcelable saveState() { 

            return null; 

        public void startUpdate(View arg0) {} 

    }

其中紅色代碼部分負責加載Layout和想layout中填充View.這樣就實作了視圖的随手勢切換.源代碼見: &lt;ignore_js_op&gt;

viewpaper 抽屜

<a href="http://www.apkbus.com/misc.php?mod=tag&amp;id=7" target="_blank">Android</a>

繼續閱讀