android中横向滑动功能,Android开发基于ViewPager+GridView实现仿大众点评横向滑动功能...
先给大家展示下效果图,如果大家大家感觉不错,请参考实现思路及代码
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实现仿大众点评横向滑动功能...相关推荐
- Android高仿大众点评(带服务端)
2019独角兽企业重金招聘Python工程师标准>>> 实例讲解了一个类似大众点评的项目,项目包含服务端和android端源码, 服务端为php代码,如果没有接触过php, 文章中讲 ...
- android自定义引导页,Android仿大众点评引导页(ViewPage)+主页面(Fragment)的实现
大家好,今天主要是实现仿大众点评引导页和主页面以及城市定位的实现,主要使用ViewPager+Fragment+SharedPreferences,实现了第一次打开程序出现引导页,再次打开跳过引导页, ...
- android 高仿大众点评,高仿大众点评商家列表
原生android,高仿大众点评商家列表; 废话不多说了,上代码,效果图 适配器 class MyAdapter extends BaseAdapter { protected final int m ...
- 在Android中访问内置SE和基于SE的卡模拟(一)
2013-10-10 编写 前言 在"十问Android NFC手机上的卡模拟"文中仅仅简单的介绍了一下相关的概念,如果需要了解基于SE的卡模拟的更多细节,也就是,究竟在Andro ...
- Android中应用百度地图API开发地图APP实例-显示百度地图
场景 效果 在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY http://lbsyun.baidu.com/index.php 申请API_KEY 登录百度开放平台后找到控制台下 ...
- android中的图片选择器,实现微信发布朋友圈多图选择上传功能
本片文章是根据项目要求的思路去学习其他的博主改良的思路,思路会有雷同,但是该文确实属于本人原文创作,参考链接会在文章最后展示(啊啊啊啊啊,好官方....) 先说一下项目的功能要求,类似于QQ和微信在举 ...
- android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料
由于这个模块内容较多,篇幅较长,请耐心阅读. 个人资料模块分为两个部分 [x] [个人资料]() [x] [资料修改]() 一.个人资料 1.个人资料界面 (1).创建个人资料界面 在com.buxu ...
- android中bmob云存储,Android中的Bmob移动后端云服务器功能
PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己用servlet作为服务端来实现过滤没有注册过的用户,但是太麻烦,而且不是随时都可以用的.这里介绍一个移动后端云服 ...
- android中帧布局效果,Android开发实现布局帧布局霓虹灯效果示例
本文实例讲述了android开发实现布局帧布局霓虹灯效果.分享给大家供大家参考,具体如下: 效果图: 实现方式: framelayout中,设置8个textview,在主函数中,设计颜色数组,通过有序 ...
- Android中ListView结合网络请求开发小案例(适合初学者必看的一篇详细实例)
本文旨在对Android基础项目,ListView项目实际小应用(更多的结合小版块完成对用户需求的完整代码体现) 首先在这里,说说CSDN这个平台... 相信大家一定也不陌生,个人之前在学习中遇到的各 ...
最新文章
- python整数与IP地址转换
- 修改so_货代、海运操作、船务操作还分不清?船公司SO文件看不懂?
- datatable怎么根据两列分组_公司要IT转型,我该怎么办?用Python进行数据处理
- 红色风格电脑手机数码商城系统网站源码
- 【C语言】中的stdbool.h头文件
- 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
- April Fools Day Contest 2016 F. Ace It!
- MAVEN处理本地jar包 ojdbc7 的spingboot配置
- Java同步锁synchronized的最全总结
- JSESSIONID 作用
- ubuntu使用CNKI官方的caj浏览器
- php文本生成图片,php文本文字创建生成图片_PHP教程
- Tire树(字典树)
- 边境的悍匪—机器学习实战:第五章 支持向量机
- 51精密线路板年终活动,爆款降临
- greenplum查询表结构java_Greenplum小把戏 - 几个常用数据库对象大小查询SQL
- 获取163联系人名字和邮箱地址
- 0x000000f怎么修复 win10_0xc000000f修复引导win10步骤
- 智能机器人为什么连接不上服务器,战争机器人无法连接服务器是什么原因
- Qt编写可视化大屏电子看板系统27-模块5负荷分布
热门文章
- Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases (连接Excel, Text等数据库)
- 软件开发需求整理概要
- matlab 图例自定义,matlab中如何自定义图例_常见问题解析
- 孪生再世代表数字几_征稿通知 |高电压技术“数字孪生技术在能源互联网中的应用”专题征稿通知...
- python字典统计排序1_python笔记17-字典如何按value排序
- 什么是PM2 ---- (零秒重启)
- 5分钟内快速上手掌握springtx事务以及注解的使用
- ironpython怎么编译_将IronPython WPF项目编译为
- RecyclerView 内item点击失效
- lisp封装成vla函数_牛逼,自动将函数或者命令行工具转换成 Web 服务