viewpager 实现左右滑动

来源:互联网 发布:科比历年数据 编辑:程序博客网 时间:2024/05/14 22:25

CNNGo的项目变化很大,之前实现左右滑屏,找了很多中法,最后用了ViewFlipper + GestureDetector 实现,

里面具体的每一个页面布局用了scrollview再嵌套布局。


今天在网上找更好的办法解决的时候,发现了viewpager,于是按照网上做了个实例,发现效果很好。太棒了。

而且手机上android market市场上面左右滑动的例子都是这样实现的。棒。。


在C:\software\android\extras\android\support\v4这个目录下面找到android-support-v4.jar这个jar包,引入到

工程里面,如果你没发现extras这个目录。因为你的Android SDK Manager上面的


箭头所指的那个没有安装,你点击更新安装就可以了。于是就会有那个目录出现。


public class ViewPagerDemoActivity 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.layout, null));          mListViews.add(mInflater.inflate(R.layout.layout, null));          mListViews.add(mInflater.inflate(R.layout.layout, null));      }                private class AwesomePagerAdapter extends PagerAdapter{                  @Override          public int getCount() {              return mListViews.size();          }            /**          * 从指定的position创建page          *          * @param container ViewPager容器          * @param position The page position to be instantiated.          * @return 返回指定position的page,这里不需要是一个view,也可以是其他的视图容器.          */          @Override          public Object instantiateItem(View collection, final int position) {                              ((ViewPager) collection).addView(mListViews.get(position),0);              final TextView tv1 = (TextView) collection.findViewById(R.id.text1);            final TextView tv2 = (TextView) collection.findViewById(R.id.text2);            tv1.setText("This is text1 = " + position);            tv2.setText("This is text2 = " + position);            tv1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(ViewPagerDemoActivity.this, "This is text1 = " + position, Toast.LENGTH_LONG).show();tv1.setTextColor(Color.RED);}});                        tv2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(ViewPagerDemoActivity.this, "This is text2 = " + position, Toast.LENGTH_LONG).show();tv2.setTextColor(Color.RED);}});                          return mListViews.get(position);          }            /**          * <span style="font-family:'Droid Sans';">从指定的position销毁page</span>          *           *           *<span style="font-family:'Droid Sans';">参数同上</span>          */          @Override          public void destroyItem(View collection, int position, Object view) {              ((ViewPager) collection).removeView(mListViews.get(position));          }                                @Override          public boolean isViewFromObject(View view, Object object) {              return view==(object);          }            @Override          public void finishUpdate(View arg0) {}                      @Override          public void restoreState(Parcelable arg0, ClassLoader arg1) {}            @Override          public Parcelable saveState() {              return null;          }            @Override          public void startUpdate(View arg0) {}                }  }


布局文件如下:






原创粉丝点击