ViewPager+GridView实现横向滑动 仿大众点评
来源:互联网 发布:数据库应用系统有什么 编辑:程序博客网 时间:2024/05/29 16:10
直接上图:
就是实现这样的效果,可以左右滑动
首先,看到这张图,我们首先会想到怎么做,很显然中间是GridView,Viewpager+ImageView下面的就行,好,大概就是这些东西了:
先看界面的布局文件:
<android.support.v4.view.ViewPager android:id="@+id/vp_menu" android:layout_width="match_parent" android:layout_height="180dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" > <ImageView android:id="@+id/iv_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/vipager_doc_select" /> <ImageView android:id="@+id/iv_two" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/vipager_doc_select" /> </LinearLayout>
代码如下:
private String Tag = "HomeFragment"; private List<TwoLevelMenu> strs = new ArrayList<TwoLevelMenu>();//vipager第一页 private List<TwoLevelMenu> strs2 = new ArrayList<TwoLevelMenu>();//vipager第二页 private MygridviewAdapter mgAdapter1;//vipager第一页适配器 private MygridviewAdapter mgAdapter2;//vipager第二页适配器 private GridView gv_one;//vipager第一页gridview private GridView gv_two;//vipager第二页gridview private ViewPager vp_menu; private List<View> pagerView; private MyViewPagerAdapter pagerAdapter;//vipager适配器 private ImageView iv_one; private ImageView iv_two; @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.e(Tag, "onAttach"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.e(Tag, "onCreateView"); View v = inflater.inflate(R.layout.fragment_home, container, false); InitDate(); InitView(v,inflater); return v; } private void InitDate() {//初始化数据 strs.add(new TwoLevelMenu("美食", R.drawable.ic_category_0)); strs.add(new TwoLevelMenu("电影", R.drawable.ic_category_1)); strs.add(new TwoLevelMenu("酒店", R.drawable.ic_category_2)); strs.add(new TwoLevelMenu("KTV", R.drawable.ic_category_3)); strs.add(new TwoLevelMenu("外卖", R.drawable.travel__icon_hotel_reserve)); strs.add(new TwoLevelMenu("优惠买单", R.drawable.travel__icon_hotel_reserve)); strs.add(new TwoLevelMenu("周边游", R.drawable.ic_category_6)); strs.add(new TwoLevelMenu("火车票机票", R.drawable.ic_category_6)); strs.add(new TwoLevelMenu("丽人", R.drawable.ic_category_11)); strs.add(new TwoLevelMenu("休闲娱乐", R.drawable.ic_category_10)); strs2.add(new TwoLevelMenu("今日新单", R.drawable.ic_category_4)); strs2.add(new TwoLevelMenu("购物", R.drawable.ic_category_14)); strs2.add(new TwoLevelMenu("旅游", R.drawable.ic_category_13)); strs2.add(new TwoLevelMenu("生活服务", R.drawable.ic_category_9)); strs2.add(new TwoLevelMenu("足疗按摩", R.drawable.ic_category_12)); strs2.add(new TwoLevelMenu("自助餐", R.drawable.ic_category_10)); strs2.add(new TwoLevelMenu("甜点饮品", R.drawable.ic_category_8)); strs2.add(new TwoLevelMenu("小吃快餐", R.drawable.ic_category_7)); strs2.add(new TwoLevelMenu("景点门票", R.drawable.ic_category_16)); strs2.add(new TwoLevelMenu("全部分类", R.drawable.ic_category_15)); } private void InitView(View v,LayoutInflater inflater) { iv_one=(ImageView) v.findViewById(R.id.iv_one); iv_two=(ImageView) v.findViewById(R.id.iv_two); mgAdapter1=new MygridviewAdapter(getActivity(), strs); pagerView=new ArrayList<View>(); View view1=inflater.inflate(R.layout.viewpager_one, null); gv_one=(GridView) view1.findViewById(R.id.gv_one); gv_one.setAdapter(mgAdapter1); pagerView.add(view1); mgAdapter2=new MygridviewAdapter(getActivity(), strs2); View view2=inflater.inflate(R.layout.viewpager_two, null); gv_two=(GridView) view2.findViewById(R.id.gv_two); gv_two.setAdapter(mgAdapter2); pagerView.add(view2); vp_menu=(ViewPager)v.findViewById(R.id.vp_menu); pagerAdapter=new MyViewPagerAdapter(getActivity(), pagerView); vp_menu.setAdapter(pagerAdapter); iv_one.setSelected(true); vp_menu.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { if(arg0==0){ iv_one.setSelected(true); iv_two.setSelected(false); }else{ iv_one.setSelected(false); iv_two.setSelected(true); } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e(Tag, "onCreate"); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.e(Tag, "onActivityCreated"); } @Override public void onResume() { super.onResume(); Log.e(Tag, "onResume"); }
MygridviewAdapter适配器:
public class MygridviewAdapter extends BaseAdapter{ public List<TwoLevelMenu> data; private LayoutInflater _inflater; private Context context; public MygridviewAdapter(Context context, List<TwoLevelMenu> data) { this.data = data; this.context = context; _inflater = LayoutInflater.from(context); } public void updateList(List<TwoLevelMenu> data) { this.data = data; notifyDataSetChanged(); } @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if (convertView == null) { convertView = _inflater.inflate(R.layout.grildview_adapter_item, null); holder = new ViewHolder(); holder.tv_menu = (TextView) convertView.findViewById(R.id.tv_menu); holder.iv_menu = (ImageView) convertView.findViewById(R.id.iv_menu); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.tv_menu.setText(data.get(position).getName()); holder.iv_menu.setImageResource(data.get(position).getId()); return convertView; } private class ViewHolder { private TextView tv_menu;// 菜单文字 private ImageView iv_menu;//菜单图标 }}
MyViewPagerAdapter适配器:
package com.fangming.meituan.adapter;import java.util.List;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.widget.GridView;public class MyViewPagerAdapter extends PagerAdapter{ private List<View> mLists; public MyViewPagerAdapter(Context context, List<View> array) { this.mLists=array; } @Override public int getCount() { return mLists.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(mLists.get(arg1)); return mLists.get(arg1); } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); }}
好了,主要的代码就是上面的这些了~有问题的朋友可以留言~
0 0
- ViewPager+GridView实现横向滑动 仿大众点评
- ViewPager+GridView实现横向滑动 仿美团
- android 仿美团、大众点评滑动viewpager菜单栏
- 高仿大众点评滑动效果
- 使用ViewPager+GridView实现横向滑动的效果(一)
- 使用ViewPager+GridView实现横向滑动的效果(二)
- 使用ViewPager+GridView实现横向滑动的效果(一)
- 使用ViewPager+GridView实现横向滑动的效果(二)
- 仿大众点评下拉菜单实现
- 仿大众点评下拉菜单实现
- Android仿大众点评
- 仿大众点评店铺详情的上下滚动、横向tab联动,标题滑动悬停到顶部,点击tab滚动到相应模块
- 使用ViewPager和GridView配合,实现GridView横向水平滑动的效果。
- android二级listview列表实现代码(高仿大众点评)
- 大众点评、百度外卖类滑动悬浮停止效果实现
- 仿viewPager-实现滑动翻页
- ViewPager(横向滑动菜单) 实现Demo
- android 单行gridview横向滑动的实现
- 各种音视频编解码学习详解
- 【Python学习笔记】装饰器
- 苹果手机有时候app无法联网的问题
- 模仿和彩云首页动画
- Memcache 面试题
- ViewPager+GridView实现横向滑动 仿大众点评
- JavaScript个人笔记:面向对象设计一(封装及prototype)
- 笔试常见逻辑题
- 移动端web页面使用字体
- 关于c++用web引用访问webservice
- 关于图像处理的初始总结(一)
- 《数据结构与算法》学习笔记30 有向图的拓扑排序
- Android 动画机制及实战
- iOS 键盘自适应(IQKeyboardManager)使用小结