直接上图:
就是实现这样的效果,可以左右滑动
首先,看到这张图,我们首先会想到怎么做,很显然中间是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==){
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);
}
}
好了,主要的代码就是上面的这些了~有问题的朋友可以留言~