viewpager+gridview
来源:互联网 发布:udp3100端口 编辑:程序博客网 时间:2024/06/03 22:59
先上效果图
再上xml布局文件
<RelativeLayout android:id="@+id/type_viewpager" android:layout_marginTop="8dp" android:layout_below="@+id/layout_home_viewpager" android:layout_width="fill_parent" android:background="#ffffff" android:layout_height="150dp" > <android.support.v4.view.ViewPager android:id="@+id/vp_home_gridview" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/layout_home_gridview_point" android:layout_width="match_parent" android:layout_height="20dp" android:layout_alignParentBottom="true" android:gravity="center" android:orientation="horizontal"/></RelativeLayout>
接着上封装好的代码
public class ViewPagerGridView { private ViewPager viewpager_gridview; List<HomeTypeBean> list;//HomeTypeBeangen根据项目的需要可自己写 List<HomeTypeBeanList> listbeans;//HomeTypeBeanList根据项目的需要可自己写 private LinearLayout layout; private Activity context; private int currentitem=0; private int size = 0; /** * * @param context * @param viewpager_gridview 布局文件中的viewpager * @param layout 小圆点所在的layout * @param list 所有的item集合 * @param size 每页显示多少个(一般10个) */ public ViewPagerGridView(Activity context, ViewPager viewpager_gridview, LinearLayout layout, List<HomeTypeBean> list , int size) { this.context = context; this.viewpager_gridview = viewpager_gridview; this.list = list; this.layout = layout; this.size = size; initView(); initData(); } private void initView() { listbeans = new ArrayList<>(); } private void initData() { fengzhuang(list,size); setRoundviewColor(); viewpager_gridview.setAdapter(new MyPagerAdpater(listbeans,context)); viewpager_gridview.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { currentitem = position; setRoundviewColor(); } @Override public void onPageScrollStateChanged(int state) { } }); } /** * * @param list 所有的item的集合 * @param size 每页显示多少个item */ public void fengzhuang(List<HomeTypeBean> list, int size){ int n = list.size()%size; int num; if (n!=0){ num = (int) list.size()/size+1; }else { num = (int) list.size()/size; } for (int i = 1;i<=num;i++){ List<HomeTypeBean> stringList =new ArrayList(); for (int j = 0;j<list.size();j++){ if (j>=(i-1)*size&&j<i*size){ stringList.add(list.get(j)); } } HomeTypeBeanList bean = new HomeTypeBeanList(); bean.setTypeBeanList(stringList); listbeans.add(bean); } } public View roundview(int height){ RoundImageView view = new RoundImageView(context); view.setImageResource(R.mipmap.ic_launcher);// View view = new View(context); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(height,height); params.setMargins(10, 0, 0, 0);//设置左边margin为10 view.setLayoutParams(params); return view; } public void setRoundviewColor(){ layout.removeAllViews(); for (int i = 0;i<listbeans.size();i++){ if (i == currentitem){ layout.addView(roundview(20)); }else { layout.addView(roundview( 10)); } } } class MyPagerAdpater extends PagerAdapter { private List<HomeTypeBeanList> listbeans; private Context context; public MyPagerAdpater(List<HomeTypeBeanList> listbeans, Context context) { this.context = context; this.listbeans = listbeans; } @Override public int getCount() { return listbeans.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { } @Override public Object instantiateItem(ViewGroup container, int position) { GridView gridView = new GridView(context); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(viewpager_gridview.getMeasuredWidth(),viewpager_gridview.getMeasuredHeight()); gridView.setLayoutParams(layoutParams); gridView.setNumColumns(size/2); gridView.setAdapter(new MyGridViewAdapter(context, listbeans,position)); container.addView(gridView); return gridView; } } private int ceshi = 0; class MyGridViewAdapter extends BaseAdapter { private Context context; private List<HomeTypeBeanList> list; private int flag; public MyGridViewAdapter(Context context, List<HomeTypeBeanList> list, int flag) { this.context = context; this.list = list; this.flag = flag; ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(context); ImageLoader.getInstance().init(configuration); } @Override public int getCount() { return list.get(flag).getTypeBeanList().size(); } @Override public Object getItem(int position) { return list.get(flag).getTypeBeanList().get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, final ViewGroup parent) { ViewHolder viewHolder=null; if (convertView==null){ viewHolder = new ViewHolder(); convertView = LayoutInflater.from(context).inflate(R.layout.layout_viewpager_gridview,parent,false); viewHolder.roundImageView = (RoundImageView) convertView.findViewById(R.id.rv_viewpager_gridview); viewHolder.textView = (TextView) convertView.findViewById(R.id.tv_viewpager_gridview); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.textView.setText(list.get(flag).getTypeBeanList().get(position).getMtname()); //AppConfig.DEFAULT_IMG_MERCHANT_BG 配置iamgeloader的显示参数 ImageLoader.getInstance().displayImage(Config.web.picUrl+list.get(flag).getTypeBeanList().get(position).getLogourl(), viewHolder.roundImageView, AppConfig.DEFAULT_IMG_MERCHANT_BG); convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (clickListener!=null) { clickListener.onCridViewClickListener(v, list.get(flag).getTypeBeanList().get(position).getPkmertype(), list.get(flag).getTypeBeanList().get(position).getMtname()); } } }); return convertView; } } class ViewHolder { RoundImageView roundImageView;//处理圆图 TextView textView;//显示名字 } public void setOnGridViewClickListener(GridViewClickListener clickListener){//设置事件监听 this.clickListener = clickListener; } private GridViewClickListener clickListener;//处理gridview的item点击事件的接口回调 public interface GridViewClickListener { public void onCridViewClickListener(View v,String pkmertype,String name); }}
接着上bean类
public class HomeTypeBean { private String addressurl; private String logourl; private String mtlevel; private String parentpk; private String mtname; private String pkmertype; private String merchantCount; private String type; public String getMerchantCount() { return merchantCount; } public void setMerchantCount(String merchantCount) { this.merchantCount = merchantCount; } public String getParentpk() { return parentpk; } public void setParentpk(String parentpk) { this.parentpk = parentpk; } public void setAddressurl(String addressurl) { this.addressurl = addressurl; } public String getAddressurl() { return addressurl; } public void setLogourl(String logourl) { this.logourl = logourl; } public String getLogourl() { return logourl; } public void setMtlevel(String mtlevel) { this.mtlevel = mtlevel; } public void setMtname(String mtname) { this.mtname = mtname; } public void setPkmertype(String pkmertype) { this.pkmertype = pkmertype; } public void setType(String type) { this.type = type; } public String getMtlevel() { return mtlevel; } public String getMtname() { return mtname; } public String getPkmertype() { return pkmertype; } public String getType() { return type; }}
另外一个bean类
public class HomeTypeBeanList { private List<HomeTypeBean> typeBeanList; public List<HomeTypeBean> getTypeBeanList() { return typeBeanList; } public void setTypeBeanList(List<HomeTypeBean> typeBeanList) { this.typeBeanList = typeBeanList; }}
最后上调用方法:
List<HomeTypeBean> homeTypeBeanList = new ArrayList<>(); for (int i=0;i<10;i++){ HomeTypeBean homeTypeBean = new HomeTypeBean(); homeTypeBean.setAddressurl("http://a.hiphotos.baidu.com/zhidao/pic/item/f9dcd100baa1cd11aa2ca018bf12c8fcc3ce2d74.jpg"); homeTypeBean.setLogourl(""); homeTypeBean.setMerchantCount(""); homeTypeBean.setMtlevel(""); if (i==0){ homeTypeBean.setMtname("美食"); }else if (i==1){ homeTypeBean.setMtname("酒店"); }else if (i==2){ homeTypeBean.setMtname("旅游"); }else if (i==3){ homeTypeBean.setMtname("购物"); }else if (i==4){ homeTypeBean.setMtname("爱美丽"); }else if (i==5){ homeTypeBean.setMtname("健康"); }else if (i==6){ homeTypeBean.setMtname("休闲娱乐"); }else if (i==7){ homeTypeBean.setMtname("智能"); }else if (i==8){ homeTypeBean.setMtname("生活服务"); }else { homeTypeBean.setMtname("更多"); } homeTypeBean.setType(""); homeTypeBean.setPkmertype(""); homeTypeBean.setParentpk(""); homeTypeBeanList.add(homeTypeBean); } ViewPagerGridView viewPagerGridView = new ViewPagerGridView(getActivity(),vp_home_gridview,layout_home_gridview_point,homeTypeBeanList,10);
RoundImageView
public class RoundImageView extends ImageView{ private Paint paint = new Paint(); public RoundImageView(Context context) { super(context); } public RoundImageView(Context context, AttributeSet attrs) { super(context, attrs); } @SuppressWarnings("deprecation") @Override protected void onDraw(Canvas canvas) { BitmapShader shader; if (getDrawable() instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable)getDrawable(); // clip shader = new BitmapShader(bitmapDrawable.getBitmap(), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); RectF rect = new RectF(0.0f, 0.0f, getWidth(), getHeight()); int width = bitmapDrawable.getBitmap().getWidth(); int height = bitmapDrawable.getBitmap().getHeight(); RectF src = null; if (((float)width) / height > 1) { src = new RectF(0.0f, 0.0f, height, height); } else { src = new RectF(0.0f, 0.0f, width, width); } Matrix matrix = canvas.getMatrix(); matrix.setRectToRect(src, rect, Matrix.ScaleToFit.CENTER); shader.setLocalMatrix(matrix); // 抗锯齿 paint.setAntiAlias(true); paint.setShader(shader); canvas.drawRoundRect(rect, this.getWidth() / 2, this.getHeight() / 2, paint); } }}
提示:
ViewPagerGridView类中用的是imageloader图片框架请自行下载或者改成自己用的框架
0 0
- viewpager+gridview
- ViewPager+GridView
- ViewPager + GridView实现GridView分页
- ViewPager+GridView显示popupwindow
- GridView ScrollView ViewPager
- ViewPager+gridView仿美团导航
- Viewpager + GridView 嵌套使用
- viewpager+gridView实现分页
- Viewpager和GridView
- ViewPager 和 GridView
- 跳转+gridview+viewpager
- viewpager+gridview gridview中的个数不确定
- Viewpager嵌套GridView的实现
- ScorollView ViewPager gridView嵌套错误
- 实现美团宫格导航ViewPager+GridView
- GridView+Fragment+ViewPager最佳实践
- ViewPager+GridView实现商品分类
- ImageLoader加载ListView GridView ViewPager
- 欢迎使用CSDN-markdown编辑器
- PHP支付宝即时到账功能的实现
- highcharts简易使用
- Sign up Error:(1, 0) Plugin with id 'com.android.application' not found
- 玩玩Linux云主机-安装redis,redis学习,Ubuntu 安装redis 配置文件路径
- viewpager+gridview
- Unity3D Shader编程】之十一 深入理解Unity5中的Standard Shader(三)&屏幕像素化特效的实现
- linux网络编程基础
- Unity学习之全景球的制作
- c++操作Excel
- 吐糟一下微信营销!(适合新手)
- 移动端js弹出层滚动的时候 body层不可滚动的解决办法
- Unity跳转场景和加载到当前场景
- Linux基本命令:echo设定颜色