做了一个项目,需要使用底部导航功能,仿微信效果,可以左右滑动切换页面。好处就是比较适合用户手势操作,操作效果比较好;缺点是viewpager控件需要提前加载下一个页面,最少提前加载一个页面,为了保证左右滑动时不出现卡顿现象。例如,当显示“首页”页面时,会加载“应用”中的页面,此时“应用”页面有联网操作的话,会启动thread联网,如果有progressDialog转圈操作的话,会在“首页”中显示,此点需要特别!!

先上效果图:

布局文件main.xml

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/guidePages"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_above="@+id/viewGroup" />

android:id="@+id/viewGroup"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:background="#000000"

android:orientation="horizontal" />

其中主activity页面MainActivity.java

//    @ViewInject(R.id.guidePages)

//    ViewPager viewPager = null;

//    //包裹底部图标的LinearLayout

//    @ViewInject(R.id.viewGroup)

//    LinearLayout viewPoints = null;

private void initViewPager() {

//设置viewpager的适配器和监听事件

ViewPagerFragmentAdapter mAdapter = new ViewPagerFragmentAdapter(getSupportFragmentManager());

viewPager.setAdapter(mAdapter);

viewPager.setOnPageChangeListener(new GuidePageChangeListener());

}

private void initBottomImage() {

//创建ImageView数组,大小是要显示的图片的数量

imageViews = new ImageView[Const.IMAGE_NUM];

// 计算每个item的宽度,使得可以显示4个图标

int itemW = screenWidth / Const.IMAGE_NUM;

//添加底部图标的图片

for(int i = 0; i

ImageView imageView = new ImageView(this);

//设置底部图标imageview的宽高

//            imageView.setLayoutParams(new LayoutParams(itemW,LayoutParams.WRAP_CONTENT));//创建一个宽为屏幕 1/4像素,高为图片高

imageView.setLayoutParams(new LayoutParams(itemW, itemW * 100 / 135));//屏幕宽度540,做的底部图高100,宽135,计算为了适配其他设备

//将底部图标layout添加到数组中

imageViews[i] = imageView;

imageViews[i].setTag(i);

imageViews[i].setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

if(viewPager != null)

viewPager.setCurrentItem((Integer)v.getTag());

}

});

//默认选中的是第一张图片,此时第一个小圆点是选中状态,其他不是

if(i==0){

imageViews[i].setBackgroundResource(R.drawable.home_bottom_icon_home);

}else if(i==1){

imageViews[i].setBackgroundResource(R.drawable.home_bottom_icon_app);

} else if(i==2){

imageViews[i].setBackgroundResource(R.drawable.home_bottom_icon_flow);

} else if(i==3){

imageViews[i].setBackgroundResource(R.drawable.home_bottom_icon_flow);

}

//将imageviews添加到底部图标视图组

viewPoints.addView(imageViews[i]);

}

}

ViewPagerFragmentAdapter.java文件

public class ViewPagerFragmentAdapter extends FragmentPagerAdapter {

public ViewPagerFragmentAdapter(FragmentManager fm) {

super(fm);

}

@Override

public Fragment getItem(int position) {

Fragment fragment = null;

if(position == 0) {

fragment = HomeFragment.newInstance(position);

} else if(position == 1) {

fragment = AppStoreFragment.newInstance(position);

} else if(position == 2) {

fragment = WifiFlowFragment.newInstance(position);

} else if(position == 3) {

fragment = SettingFragment.newInstance(position);

}

return fragment;

}

@Override

public int getCount() {

return Const.IMAGE_NUM;//IMAGE_NUM = 4

}

}

一个imageBackground文件home_bottom_icon_home.xml

android viewpager button 导航,ViewPager做底部导航相关推荐

  1. Android 最常用的四种底部导航栏实现

    Android 底部导航栏实现 底部导航栏的应用非常的广泛.今天就总结下几种实现的方式. 一.Fragment + TextView 实现 前面一篇博客在介绍Fragment 的时候就使用了Fragm ...

  2. 转载:Android (争取做到)最全的底部导航栏实现方法

    原文出处 标题:Android (争取做到)最全的底部导航栏实现方法 作者:野狼谷 原文链接:Android (争取做到)最全的底部导航栏实现方法 - 野狼谷 - 博客园 前言 本文(争取做到)And ...

  3. apicloud aui 做底部导航

    apicloud aui 做底部导航 <!doctype html> <html><head><meta charset="utf-8"& ...

  4. 原生Android打造一个炫酷的底部导航栏

    最近浏览各大平台,发现各种导航栏层出不穷,出于好奇心,我也来试试.先上个效果图 代码也简单:首先布局文件 <?xml version="1.0" encoding=" ...

  5. 21天学习之二(Android 10.0 SystemUI默认去掉底部导航栏的三种方法)

    活动地址:CSDN21天学习挑战赛 1.概述 在定制化开发中,在SystemUI的一些定制功能中,针对默认去掉底部导航栏的方法有好几种,StatusBar和DisplayPolicy.java中api ...

  6. Android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能...

    前言 大家好,我是 Vic,今天给大家带来AndroidStudio制作底部导航栏以及用Fragment实现切换功能的概述,希望你们喜欢 学习目标 AndroidStudio制作底部导航栏以及用Fra ...

  7. Android开发:隐藏和显示底部导航栏

    描述:视频播放器实现全屏和小屏互相切换时,显示和隐藏底部导航栏的方法 该例子设置的Activity是去除状态栏和标题栏,全屏显示布局和电量等信息.Manifest文件 theme如下: <act ...

  8. 质感设计 android,扣丁学堂Android开发Flutter质感设计之底部导航

    BottomNavigationBar即底部导航栏控件.显示在应用底部的质感设计控件,用于在少量视图中切换.底部导航栏包含多个以标签.图标或两者搭配的形式显示在项目底部的项目,提供了应用程序的顶级视图 ...

  9. React Native 的顶部导航栏和底部导航栏目

    说来也是惭愧,本来关于底部导航栏,我已经写过一篇博客,只不过那篇更偏向于入门一些,当时一实现功能之后就迫不及待的分享给大家了.地址在这儿:http://blog.csdn.net/LJFPHP/art ...

最新文章

  1. 简单总结nodejs处理tcp连接的核心流程
  2. 给羊羔:学习web前端开发的路线(一)
  3. 【windows7】解决IIS 80端口占用问题(亲测)
  4. Making the Grade POJ - 3666(离散化+dp)
  5. guava 集合转换_Guava的Collections2:过滤和转换Java集合
  6. 如何使用Node.js构建完整的GraphQL服务器
  7. 主机屋linux怎么连,全网最详细的samba文件共享服务!
  8. 【经验分享】linux交叉编译 - openssl动态库
  9. (摘录)Linux如何去学、要学什么、又怎样才能学好
  10. 10 年三线小城 IT 开发的感悟
  11. Android 分屏模式-多窗口支持
  12. Caused by: java.io.IOException: Keystore was tampered with, or password was incorrect
  13. 餐厅小票打印模板_智慧餐厅多商家入驻小程序开发,成功案例:万足外卖!
  14. 基于大数据分析山东2020年高考难度和选科要求(一)
  15. 如何快速搭建一个简单图像搜索引擎
  16. Cotex-M3内核STM32F10XX系列时钟及其配置方法
  17. itol绘制高颜值的进化树
  18. c 编程语言翻译 网站,计算机语言翻译
  19. 数据库学习笔记四收缩数据库
  20. Mysql常用函数(一)

热门文章

  1. 教你如何rEFIt-让你开机免按option!
  2. Microsoft SQL Server 查询表中有重复列值的数据 (PARENTGOODSID列值重复的行)?
  3. NOD32: 教育网、公网超级 病毒更新服务器
  4. pheatmap 参数整理
  5. 转 layer的Icon样式以及一些常用的layer窗口使用
  6. javap反编译学习
  7. iOS UINavigationController
  8. PHP基础封装简单的MysqliHelper类
  9. 关于request取中文字符串变?的解决办法
  10. 客户端脚本验证码总结一