先给大家展示下效果图,如果大家大家感觉不错,请参考实现思路及代码

1 ViewPager类提供了多界面切换的新效果。

新效果有如下特征:

[1] 当前显示一组界面中的其中一个界面。

[2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分。

[3]滑动结束后,界面自动跳转到当前选择的界面中

2 介绍里面几个比较重要的方法与接口

1,OnPageChangeListener ViewPager页面进行切换监听接口 其中我们经常要实现public void onPageSelected(int arg0),public void onPageScrolled(int arg0, float arg1, int arg

2),public void onPageScrollStateChanged(int arg0)着三个方面,其中第一个方法是更多的用到;

2,setCurrentItem(int item),来设置跳转到当前的页面;

3,要显示ViewPager,当然还少不了PagerAdapter类,进行适配;其中我们经常也要实现以下方法才可以:public void destroyItem(View arg0, int arg1, Object arg2),public int getCount(),public Object instantiateItem(View arg0, int arg1),public boolean isViewFromObject(View arg0, Object arg1),具体的使用方法等会看例子就ok了

3 例子代码

java代码

package mm.shandong.com.testviewpagergrid;

import android.content.res.TypedArray;

import android.support.v4.view.PagerAdapter;

import android.support.v4.view.ViewPager;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.TextView;

import android.widget.Toast;

import java.util.ArrayList;

import java.util.List;

import mm.shandong.com.testviewpagergrid.entity.Catogray;

public class TestViewpagerGridActivity extends AppCompatActivity {

ViewPager viewPagerHomeFragment;

List catogarys;

String[] catogary_names;

int[] catogary_resourceIds;

LayoutInflater layoutInflater;

List gridViews;

RadioGroup radioGroup_index_fragment;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_test_viewpager_grid);

catogary_names = getResources().getStringArray(R.array.catogary_names);

TypedArray typedArray = getResources().obtainTypedArray(R.array.catogary_resourceIds);

catogary_resourceIds = new int[typedArray.length()];

for (int i = 0; i < typedArray.length(); i++) {

catogary_resourceIds[i] = typedArray.getResourceId(i, 0);

}

catogarys = new ArrayList();

viewPagerHomeFragment = (ViewPager) findViewById(R.id.viewPagerHomeFragment);

layoutInflater = getLayoutInflater();

radioGroup_index_fragment =

(RadioGroup) findViewById(R.id.radioGroup_index_fragment);

for (int i = 0; i < catogary_names.length; i++) {

Catogray catogary = new Catogray();

catogary.setName(catogary_names[i]);

catogary.setImage_source(catogary_resourceIds[i]);

catogarys.add(catogary);

}

initViewPager();

}

public void initViewPager() {

gridViews = new ArrayList();

///定义第一个GridView

GridView gridView1 =

(GridView) layoutInflater.inflate(R.layout.grid_fragment_home, null);

MyGridViewAdapter myGridViewAdapter1 = new MyGridViewAdapter(0, 8);

gridView1.setAdapter(myGridViewAdapter1);

///定义第二个GridView

GridView gridView2 = (GridView)

layoutInflater.inflate(R.layout.grid_fragment_home, null);

MyGridViewAdapter myGridViewAdapter2 = new MyGridViewAdapter(1, 8);

gridView2.setAdapter(myGridViewAdapter2);

///定义第三个GridView

GridView gridView3 = (GridView)

layoutInflater.inflate(R.layout.grid_fragment_home, null);

MyGridViewAdapter myGridViewAdapter3 = new MyGridViewAdapter(2, 8);

gridView3.setAdapter(myGridViewAdapter3);

gridViews.add(gridView1);

gridViews.add(gridView2);

gridViews.add(gridView3);

///定义viewpager的PagerAdapter

viewPagerHomeFragment.setAdapter(new PagerAdapter() {

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

// TODO Auto-generated method stub

return arg0 == arg1;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return gridViews.size();

}

@Override

public void destroyItem(ViewGroup container, int position,

Object object) {

// TODO Auto-generated method stub

container.removeView(gridViews.get(position));

//super.destroyItem(container, position, object);

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

// TODO Auto-generated method stub

container.addView(gridViews.get(position));

return gridViews.get(position);

}

});

///注册viewPager页选择变化时的响应事件

viewPagerHomeFragment.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

@Override

public void onPageScrollStateChanged(int position) {

// TODO Auto-generated method stub

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

// TODO Auto-generated method stub

}

@Override

public void onPageSelected(int position) {

// TODO Auto-generated method stub

RadioButton radioButton = (RadioButton)

radioGroup_index_fragment.getChildAt(position);

radioButton.setChecked(true);

}

});

}

///定影GridView的Adapter

public class MyGridViewAdapter extends BaseAdapter {

private int page;

private int count;

public MyGridViewAdapter(int page, int count) {

this.page = page;

this.count = count;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return 8;

}

@Override

public Catogray getItem(int position) {

// TODO Auto-generated method stub

return catogarys.get(page * count + position);

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return 0;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

ViewHolder viewHolder = null;

final Catogray catogary = catogarys.get(page * count + position);

if (convertView == null) {

viewHolder = new ViewHolder();

convertView = layoutInflater.inflate(R.layout.grid_fragment_home_item, null);

viewHolder.grid_fragment_home_item_img =

(ImageView) convertView.findViewById(R.id.grid_fragment_home_item_img);

viewHolder.grid_fragment_home_item_txt =

(TextView) convertView.findViewById(R.id.grid_fragment_home_item_txt);

convertView.setTag(viewHolder);

} else {

viewHolder = (ViewHolder) convertView.getTag();

}

viewHolder.grid_fragment_home_item_img.setImageResource(catogary.getImage_source());

viewHolder.grid_fragment_home_item_txt.setText(catogary.getName());

viewHolder.grid_fragment_home_item_img.

setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Toast.makeText(TestViewpagerGridActivity.this,

catogary.getName(), Toast.LENGTH_SHORT).show();

}

});

return convertView;

}

}

public class ViewHolder {

public ImageView grid_fragment_home_item_img;

public TextView grid_fragment_home_item_txt;

}

}

以上所述是小编给大家介绍的Android开发仿大众点评基于ViewPager+GridView实现横向滑动功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

android中横向滑动功能,Android开发基于ViewPager+GridView实现仿大众点评横向滑动功能...相关推荐

  1. Android高仿大众点评(带服务端)

    2019独角兽企业重金招聘Python工程师标准>>> 实例讲解了一个类似大众点评的项目,项目包含服务端和android端源码, 服务端为php代码,如果没有接触过php, 文章中讲 ...

  2. android自定义引导页,Android仿大众点评引导页(ViewPage)+主页面(Fragment)的实现

    大家好,今天主要是实现仿大众点评引导页和主页面以及城市定位的实现,主要使用ViewPager+Fragment+SharedPreferences,实现了第一次打开程序出现引导页,再次打开跳过引导页, ...

  3. android 高仿大众点评,高仿大众点评商家列表

    原生android,高仿大众点评商家列表; 废话不多说了,上代码,效果图 适配器 class MyAdapter extends BaseAdapter { protected final int m ...

  4. 在Android中访问内置SE和基于SE的卡模拟(一)

    2013-10-10 编写 前言 在"十问Android NFC手机上的卡模拟"文中仅仅简单的介绍了一下相关的概念,如果需要了解基于SE的卡模拟的更多细节,也就是,究竟在Andro ...

  5. Android中应用百度地图API开发地图APP实例-显示百度地图

    场景 效果 在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY http://lbsyun.baidu.com/index.php 申请API_KEY 登录百度开放平台后找到控制台下 ...

  6. android中的图片选择器,实现微信发布朋友圈多图选择上传功能

    本片文章是根据项目要求的思路去学习其他的博主改良的思路,思路会有雷同,但是该文确实属于本人原文创作,参考链接会在文章最后展示(啊啊啊啊啊,好官方....) 先说一下项目的功能要求,类似于QQ和微信在举 ...

  7. android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料

    由于这个模块内容较多,篇幅较长,请耐心阅读. 个人资料模块分为两个部分 [x] [个人资料]() [x] [资料修改]() 一.个人资料 1.个人资料界面 (1).创建个人资料界面 在com.buxu ...

  8. android中bmob云存储,Android中的Bmob移动后端云服务器功能

    PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己用servlet作为服务端来实现过滤没有注册过的用户,但是太麻烦,而且不是随时都可以用的.这里介绍一个移动后端云服 ...

  9. android中帧布局效果,Android开发实现布局帧布局霓虹灯效果示例

    本文实例讲述了android开发实现布局帧布局霓虹灯效果.分享给大家供大家参考,具体如下: 效果图: 实现方式: framelayout中,设置8个textview,在主函数中,设计颜色数组,通过有序 ...

  10. Android中ListView结合网络请求开发小案例(适合初学者必看的一篇详细实例)

    本文旨在对Android基础项目,ListView项目实际小应用(更多的结合小版块完成对用户需求的完整代码体现) 首先在这里,说说CSDN这个平台... 相信大家一定也不陌生,个人之前在学习中遇到的各 ...

最新文章

  1. python整数与IP地址转换
  2. 修改so_货代、海运操作、船务操作还分不清?船公司SO文件看不懂?
  3. datatable怎么根据两列分组_公司要IT转型,我该怎么办?用Python进行数据处理
  4. 红色风格电脑手机数码商城系统网站源码
  5. 【C语言】中的stdbool.h头文件
  6. 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
  7. April Fools Day Contest 2016 F. Ace It!
  8. MAVEN处理本地jar包 ojdbc7 的spingboot配置
  9. Java同步锁synchronized的最全总结
  10. JSESSIONID 作用
  11. ubuntu使用CNKI官方的caj浏览器
  12. php文本生成图片,php文本文字创建生成图片_PHP教程
  13. Tire树(字典树)
  14. 边境的悍匪—机器学习实战:第五章 支持向量机
  15. 51精密线路板年终活动,爆款降临
  16. greenplum查询表结构java_Greenplum小把戏 - 几个常用数据库对象大小查询SQL
  17. 获取163联系人名字和邮箱地址
  18. 0x000000f怎么修复 win10_0xc000000f修复引导win10步骤
  19. 智能机器人为什么连接不上服务器,战争机器人无法连接服务器是什么原因
  20. Qt编写可视化大屏电子看板系统27-模块5负荷分布

热门文章

  1. Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases (连接Excel, Text等数据库)
  2. 软件开发需求整理概要
  3. matlab 图例自定义,matlab中如何自定义图例_常见问题解析
  4. 孪生再世代表数字几_征稿通知 |高电压技术“数字孪生技术在能源互联网中的应用”专题征稿通知...
  5. python字典统计排序1_python笔记17-字典如何按value排序
  6. 什么是PM2 ---- (零秒重启)
  7. 5分钟内快速上手掌握springtx事务以及注解的使用
  8. ironpython怎么编译_将IronPython WPF项目编译为
  9. RecyclerView 内item点击失效
  10. lisp封装成vla函数_牛逼,自动将函数或者命令行工具转换成 Web 服务