Android中如何实现单行,水平滚动的分页的G

【Android实现 跨页面滑动】滑动跳转页面【二次元的程序员吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:622贴子:
【Android实现 跨页面滑动】滑动跳转页面收藏
之前都是单机跳转,现在改为跨页面,滑动跳转这个不在博客写了,直接上代码。
这是3个页面:白色,黄色,紫色
MainActivity.javapackage com.open_open.expertui2;import java.util.ArrayLimport java.util.Limport java.util.zip.Iimport android.app.Aimport android.os.Bimport android.support.v4.view.PagerAimport android.support.v4.view.ViewPimport android.view.LayoutIimport android.view.Vimport android.view.ViewGpublic class MainActivity extends Activity {
private View view1, view2, view3;
private ViewPager viewP
//对应的viewPager
private List&View& viewL//view数组
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
LayoutInflater inflater=getLayoutInflater();
view1 = inflater.inflate(R.layout.activity_test_one, null);
view2 = inflater.inflate(R.layout.activity_test_two,null);
view3 = inflater.inflate(R.layout.activity_test_three, null);
viewList = new ArrayList&View&();// 将要分页显示的View装入数组中
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
PagerAdapter pagerAdapter = new PagerAdapter() {
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
public int getCount() {
// TODO Auto-generated method stub
return viewList.size();
public void destroyItem(ViewGroup container, int position,
Object object) {
// TODO Auto-generated method stub
container.removeView(viewList.get(position));
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(viewList.get(position));
return viewList.get(position);
viewPager.setAdapter(pagerAdapter);
activity_main.xml&?xml version=&1.0& encoding=&utf-8&?&&RelativeLayout xmlns:android=&&
xmlns:tools=&&
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&&
&android.support.v4.view.ViewPager
android:id=&@+id/viewpager&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:layout_gravity=&center& /&&EditText
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:text=&主页!!&
android:textSize=&30sp&
android:gravity=&center&
android:layout_marginTop=&50sp&/&&/RelativeLayout&其他子页面:activity_test_one , two , three 大家改一下,背景色 和文本框的字体OK&?xml version=&1.0& encoding=&utf-8&?&&LinearLayout xmlns:android=&&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:background=&#ffffff&
android:orientation=&vertical& &
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:text=&页面一!&
android:textSize=&30sp&
android:gravity=&center&/&&/LinearLayout&
详细见dalao 的博客:分谢他的经验分享!
登录百度帐号1.实现分页最主要的就是封装分页代码,然后在按钮里实现相关的操作
/** * 分页工具 * * @Project App_Page * @Package com.android.dividepage * @author chenlin * @version 1.0 * @Date 日 * @Note TODO * @param
*/ public class PageHelper
{ private List
allD // 所有数据 private int perPage = 10; // 每页条目 private int currentPage = 1;// 当前页 private int pageNum = 1; // 页码 private List
childD// 子数据 private int allN// 总共条目 public PageHelper(List
datas, int perPage) { this.allData = if (perPage & 0) this.perPage = perP // 如果数据大于10条 if (allData != null &;&; allData.size() & perPage) { childData = allData.subList(0, perPage - 1); } allNum = allData.size(); // 如果总数能除断perPage,页数就是余数,否则+1 pageNum = allNum % perPage == 0 ? (allNum / perPage) : (allNum / perPage + 1); } public int getCount() { return this.allN } public int getCurrentPage() { return this.currentP } public int getPageNum() { return this.pageN } public int getPerPage() { return this.perP } public void gotoPage(int n) { // 页面跳转 currentPage = n & pageNum ? pageNum : (n & 1 ? 1 : n); } public boolean hasNextPage() {// 是否有下一页 return currentPage & pageN } public boolean hasPrePage() {// 是否有前一页 return currentPage & 1; } public void headPage() {// 第一页 currentPage = 1; } public void lastPage() {// 最后一页 currentPage = pageN } public void nextPage() {// 下一页 currentPage = hasNextPage() ? currentPage + 1 : pageN } public void prePage() {// 前一页 currentPage = hasPrePage() ? currentPage - 1 : 1; } public void setPerPage(int perPage) {// 设置上一页面 this.perPage = perP } /** * 获得当前数据 * @return */ public List
currentList() { if (currentPage == 1) { childData = allData.subList(0, perPage); } else if (currentPage == pageNum) { childData = allData.subList(perPage * (pageNum - 1), allNum); } else { childData = allData.subList(perPage * (currentPage - 1), perPage * currentPage); } return childD } public void setCurrentPage(int currentPage) { this.currentPage = currentP } }
2、主页里我根据tab标签把按钮设置进去,然后在click里方法读取,最后根据tag标签就可判断是哪个按钮点击了
/** * 分页主页 * @Project App_Page * @Package com.android.dividepage * @author chenlin * @version 1.0 * @Date 日 * @Note TODO */ public class MainActivity extends Activity implements OnClickListener { private ListView mListV //分页按钮 private Button mBtnPrePage, mBtnNextPage, mBtnPreItem, mBtnNextI //显示分页信息 private TextView mTvPageNo; //数据实现 private PageHelper
mPageDaoI private DataAdapter mA private List
mD //被选着的索引 private int selectIndex = 0; private static final int PREPAGE = 0; private static final int NEXTPAGE = 1; private static final int PREITEM = 2; private static final int NEXTITEM = 3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); initDatas(); } private void initDatas() { //从资源文件里读数据 mDatas = Arrays.asList(getResources().getStringArray(R.array.channellist)); //每次读8条数据 mPageDaoImpl = new PageHelper
(mDatas, 8); mAdapter = new DataAdapter(this, mPageDaoImpl.currentList()); mListView.setAdapter(mAdapter); //设置当前页码与总页码 mTvPageNo.setText(mPageDaoImpl.getCurrentPage() + & / & + mPageDaoImpl.getPageNum()); } private void initViews() { mListView = (ListView) findViewById(R.id.page_list); mBtnPrePage = (Button) findViewById(R.id.pre_page); mBtnPrePage.setTag(PREPAGE); mBtnPrePage.setOnClickListener(this); mBtnNextPage = (Button) findViewById(R.id.next_page); mBtnNextPage.setTag(NEXTPAGE); mBtnNextPage.setOnClickListener(this); mBtnPreItem = (Button) findViewById(R.id.pre_item); mBtnPreItem.setTag(PREITEM); mBtnPreItem.setOnClickListener(this); mBtnNextItem = (Button) findViewById(R.id.next_item); mBtnNextItem.setTag(NEXTITEM); mBtnNextItem.setOnClickListener(this); mTvPageNo = (TextView) findViewById(R.id.pagenum); } @Override public void onClick(View v) { final int flag = (Integer) v.getTag(); switch (flag) { case PREPAGE:// 首页 headPage(); case NEXTPAGE:// 尾页 lastPage(); case PREITEM:// 上一条 prePage(); case NEXTITEM:// 下一条 nextPage(); } } private void prePage() { if (selectIndex == 0) { if (mPageDaoImpl.getCurrentPage() &= 1) { mPageDaoImpl.prePage(); } mAdapter.setData(mPageDaoImpl.currentList()); mListView.setSelection(mAdapter.getCount() - 1); mTvPageNo.setText(mPageDaoImpl.getCurrentPage() + & / & + mPageDaoImpl.getPageNum()); } else { } } private void nextPage() { if (mPageDaoImpl.getCurrentPage() &= mPageDaoImpl.getPageNum()) { mPageDaoImpl.nextPage(); } mAdapter.setData(mPageDaoImpl.currentList()); mListView.setSelection(0); mTvPageNo.setText(mPageDaoImpl.getCurrentPage() + & / & + mPageDaoImpl.getPageNum()); } private void lastPage() { if (mPageDaoImpl.getCurrentPage() != mPageDaoImpl.getPageNum()) { mPageDaoImpl.lastPage(); } mAdapter.setData(mPageDaoImpl.currentList()); mTvPageNo.setText(mPageDaoImpl.getCurrentPage() + & / & + mPageDaoImpl.getPageNum()); } private void headPage() { if (mPageDaoImpl.getCurrentPage() != 1) { mPageDaoImpl.headPage(); } mAdapter.setData(mPageDaoImpl.currentList()); mTvPageNo.setText(mPageDaoImpl.getCurrentPage() + & / & + mPageDaoImpl.getPageNum()); } }
3、适配器代码,太简单了,我就不说了
public class DataAdapter extends BaseAdapter { private Context mC private List
mD public DataAdapter(Context context, List
datas) { this.mContext = this.mDatas = } @Override public int getCount() { return mDatas == null ? 0 : mDatas.size(); } @Override public Object getItem(int position) { return mDatas == null ? null : mDatas.get(position); } @Override public long getItemId(int position) { } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder mH if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.channel_item, parent, false); mHolder = new ViewHolder(); mHolder.nameView = (TextView) convertView.findViewById(R.id.channel_name); convertView.setTag(mHolder); } mHolder = (ViewHolder) convertView.getTag(); mHolder.nameView.setText(mDatas.get(position)); return convertV } static class ViewHolder { public TextView nameV } public void setData(List
datas) { mDatas = notifyDataSetChanged(); } }
4、代码下载
链接:http://pan.baidu.com/s/1kVuAUKf 密码:lgg6
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
新用户大礼包!
现在注册,免费体验40+云产品,及域名优惠!
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
Android 实现简单的分页相关信息,包括
的信息,所有Android 实现简单的分页相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
Internationalandorid gridview 单行横向显示 横向滚动实现
实现方法:
布局时需要加一个HorizontalScrollView 保证GridView可以横向显示滑动
加HorizontalScrollView时GridView 外面需要加一个LinearLayout线性布局
&horizontalscrollview& p=""&
android:layout_width=fill_parent
android:layout_height=wrap_content
android:layout_width=fill_parent
android:layout_height=wrap_content
android:orientation=vertical &
&gridview& p=""&
android:id=@+id/gridView
android:layout_width=fill_parent
android:layout_height=wrap_content
android:layout_gravity=center &
item的布局根据自己要显示的数据随便定义
重点设置在代码中:
int length你的数据长度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float density = dm.
int gridviewWidth = (int) (110 * length* density);
int itemWidth = (int) (100 * density);
根据屏幕密度和你的数据长度设置gridView的宽度,和每个item的宽度
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
gridviewWidth , LinearLayout.LayoutParams.FILL_PARENT);
gridView.setLayoutParams(params); //重点
gridView.setColumnWidth(itemWidth); //重点
gridView.setHorizontalSpacing(10); //间距
gridView.setStretchMode(GridView.NO_STRETCH);
gridView.setNumColumns(length); //重点
Android GridView实现横向滚动
HorizontalScrollView 和GridView 实现横向滑动
Android实现横向滑动的GridView
Android横向滑动的GridView
GridView横向滑动+预览
Android横向滑动的listview
HorizontalScrollView嵌套GridView实现横向滑动
HorizontalScrollView水平方向滑动(嵌套GridView)
android GridView两行水平滚动实现效果
没有更多推荐了,-------胜利女神在微笑-----
带翻页标志的横向滑动GridView
1. 先看效果图
开始这是我app的UI图。
这是我最后做出来的效果图
2. 是你想要的么
如果你们项目也是需要做成这样,恭喜你可以省下很多时间了,其实整个效果最难的的我认为是为每页添加标识,如果只是做一个横向滑动的的九宫格GridView那还是不难,网上类似的文章很多,最难的是不知道数据库给你多少数据,所以这页数是不确定的,比如我这个,假如8个一页,如果数据库给我们7个数据则只有一页,如果17个数据则是3页,其实到这里还是不难,因为网上文章也很多,我也查了很多,在这里给他们列出来,希望可以看看。,我的代码大多来自他。,,,,。
3. 不正常的解决之法
因为他们的代码都不能为我解决每页的标志,就是滑动下面的导航标志也要跟着动,所以没办法我只有用了个死办法,布了个帧布局,然后在在下面加了4个view,然后拿到数据根据实际数据对view进行隐藏,所以这办法有点死而且不对,因为我相信我这app不可能超过4爷,因为一页有8个,感觉不太可能超过32个小item,所以这点要注意,如果你们想到好办法一定要留言告诉我。
4. 道友留步
这是我根据他们的代码做出的一个demo效果。
有点粗糙,但是该有的都有,自己根据自己需求去改一些小细节,代码地址
没有更多推荐了,android中listview 左右翻页效果如何实现? - ITeye问答
我有一个动态填充数据的listview,现在是默认的上下滚动查看内容,我想做成想乐phone主菜单那样,左右拖动翻页,查看上一页或下一页的数据的效果,哪位大侠能赐教下,看了lordhong的swipe手势及拖动效果,可以listview那部分左右翻屏了,但应该怎么重写下listview,让它的内容支持左右翻屏呢
左右换页使用GestureDetector来实现。同时使用ViewSwitcher来添加两个ListView到页面中
我要求实现的效果是,手指在listView上左右抹东时换页,并且换页时有新页面与老页面的过度效果
我想你们应该使用的是ListActivity
首先建立一个包含翻页按钮的view.然后使用getListView().addFooterView(view);的方法来将这个view放到list的底部。
然后实现button的onclick方法, 来重新填充ListView的数据
兄弟,listView翻页还实现了?
我现在也需要实现这个功能,手上的这个项目非要这个动画。
如果实现了,能否分享下!
已解决问题
未解决问题

我要回帖

更多关于 苏G 的文章

 

随机推荐