使用ViewPager+GridView实现横向滑动的效果(二)

                   上一篇文章初步学习了使用ViewPager(http://blog.csdn.net/jiangqq781931404/article/details/9363919)

            现在正是开始使用ViewPager+GridView方法实现横向滑动效果;

                   

                  上面就是实现的效果,当然用手去滑动,是可以进行横向滑动,到时候有兴趣的可以把例子代码部署到手机中进行测试一下:

            实现该效果的方法,其实还是比较简单的

           1:在布局文件中加入<android.support.v4.view.ViewPager
        android:paddingTop="250dip"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"        
        android:id="@+id/myviewpager"
        android:layout_weight="7"
        android:layout_gravity="center_vertical"
        android:clickable="true"
        android:focusable="true"
        />    引入ViewPager包

          2:然后创建出GridView把数据添加进去,

          3:使用ViewPager进行显示

         

         接下去直接看代码直截了当

         MainActivity.java

         

[java]  view plain copy
  1. /** 
  2.  * 实现自定义ViewPager+GridView 
  3.  * @author jiangqq 
  4.  * @time 2013/07/17  17:55  
  5.  */  
  6. public class MainActivity extends Activity {  
  7.     private MyViewPagerAdapter adapter;  
  8.     private List<GridView> mLists;  
  9.     private ViewPager mViewPager;  
  10.     private String[] mStrs = new String[] { "01""02""03""04""05""06",  
  11.             "07""08""09""10""11""12""13""14""15""16""17",  
  12.             "18""19""20""21""22""23""24""25""26""27""28",  
  13.             "29""30""31""32""33""34""35""36""37""38""39",  
  14.             "40""41""42""43""44""45""46""47""48""49""50",  
  15.             "51""52""53""54""55""56""57""58""59""60" };  
  16.     private int index = 0;  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_main);  
  22.         init();  
  23.         mViewPager = (ViewPager) findViewById(R.id.myviewpager);  
  24.         mViewPager.setOnPageChangeListener(new MyOnPageChanger());  
  25.         adapter = new MyViewPagerAdapter(this, mLists);  
  26.         mViewPager.setAdapter(adapter);  
  27.   
  28.     }  
  29.       
  30.     public void init() {  
  31.   
  32.         final int PageCount = (int) Math.ceil(mStrs.length / 28.0f);  
  33.         mLists = new ArrayList<GridView>();  
  34.   
  35.         for (int i = 0; i < PageCount; i++) {  
  36.             GridView gv = new GridView(this);  
  37.             gv.setAdapter(new MyGridViewAdapter(this, mStrs, i));  
  38.             gv.setGravity(Gravity.CENTER);  
  39.             gv.setClickable(true);  
  40.             gv.setFocusable(true);  
  41.             gv.setNumColumns(7);  
  42.             gv.setOnItemClickListener(new OnItemClickListener() {  
  43.                 @Override  
  44.                 public void onItemClick(AdapterView<?> arg0, View arg1,  
  45.                         int arg2, long arg3) {  
  46.                     Toast.makeText(MainActivity.this,  
  47.                             "正在播放第" + mStrs[index*28+arg2] + "集",  
  48.                             Toast.LENGTH_SHORT).show();  
  49.                 }  
  50.             });  
  51.             mLists.add(gv);  
  52.         }  
  53.     }  
  54.       
  55.     /** 
  56.      * ViewPager页面选项卡进行切换时候的监听器处理 
  57.      * @author jiangqingqing 
  58.      * 
  59.      */  
  60.     class MyOnPageChanger implements OnPageChangeListener  
  61.     {  
  62.         @Override  
  63.         public void onPageScrollStateChanged(int arg0) {  
  64.         }  
  65.         @Override  
  66.         public void onPageScrolled(int arg0, float arg1, int arg2) {  
  67.               
  68.         }  
  69.         @Override  
  70.         public void onPageSelected(int arg0) {  
  71.               
  72.             index=arg0;  
  73.             Log.i("jiangqq""当前在第"+index+"页");  
  74.         }  
  75.           
  76.     }  
     MyViewPagerAdapter.java  ViewPager页面适配器

  

[java]  view plain copy
  1. /** 
  2.  * 实现ViewPager页卡 
  3.  * @author jiangqq 
  4.  * 
  5.  */  
  6. public class MyViewPagerAdapter extends PagerAdapter{  
  7.     private List<GridView> mLists;  
  8.     public MyViewPagerAdapter(Context context, List<GridView> array) {  
  9.         this.mLists=array;  
  10.     }  
  11.     @Override  
  12.     public int getCount() {  
  13.         return mLists.size();  
  14.     }  
  15.   
  16.     @Override  
  17.     public boolean isViewFromObject(View arg0, Object arg1) {  
  18.           
  19.         return arg0 == arg1;  
  20.     }  
  21.     @Override  
  22.     public Object instantiateItem(View arg0, int arg1)  
  23.     {  
  24.         ((ViewPager) arg0).addView(mLists.get(arg1));  
  25.         return mLists.get(arg1);  
  26.     }  
  27.   
  28.     @Override  
  29.     public void destroyItem(View arg0, int arg1, Object arg2)  
  30.     {  
  31.         ((ViewPager) arg0).removeView((View) arg2);  
  32.     }  
    GridView自定义适配器

  

[java]  view plain copy
  1. public class MyGridViewAdapter extends BaseAdapter {  
  2.   
  3.     private Context mContext;  
  4.     private List<String> mLists;  
  5.     public static final int PAGE_SIZE = 28// 每一屏幕显示28 Button  
  6.     public MyGridViewAdapter(Context pContext, String[] pStrs, int page) {  
  7.         this.mContext = pContext;  
  8.         mLists = new ArrayList<String>();  
  9.         int i = page *PAGE_SIZE;  
  10.         int end = i +PAGE_SIZE;  
  11.         while ((i < pStrs.length) && (i < end)) {  
  12.             mLists.add(pStrs[i]);  
  13.             i++;  
  14.         }  
  15.     }  
  16.     @Override  
  17.     public int getCount() {  
  18.           
  19.         return mLists.size();  
  20.     }  
  21.     @Override  
  22.     public Object getItem(int position) {  
  23.           
  24.         return mLists.get(position);  
  25.     }  
  26.     @Override  
  27.     public long getItemId(int position) {     
  28.         return position;  
  29.     }  
  30.     @Override  
  31.     public View getView(final int position, View convertView, ViewGroup parent) {  
  32.   
  33.         Holder _Holder = null;  
  34.         if (null == convertView) {  
  35.             _Holder = new Holder();  
  36.             LayoutInflater mInflater = LayoutInflater.from(mContext);  
  37.             convertView = mInflater.inflate(R.layout.gridview_item, null);  
  38.             _Holder.btn_gv_item = (Button) convertView  
  39.                     .findViewById(R.id.btn_gv_item);  
  40.             _Holder.btn_gv_item.setFocusable(false);  
  41.             convertView.setTag(_Holder);  
  42.         } else {  
  43.             _Holder = (Holder) convertView.getTag();  
  44.         }  
  45.         _Holder.btn_gv_item.setText(mLists.get(position));  
  46.           
  47.         return convertView;  
  48.     }  
  49.   
  50.     private static class Holder {  
  51.         Button btn_gv_item;  
  52.     }  
  53.       
     

     上面也是主要代码,详细例子代码已经上传:

      http://download.csdn.net/detail/jiangqq781931404/5774891

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值