APP市场中大多数新闻App都有导航菜单,导航菜单是一组标签的集合,在新闻客户端中,每个标签标示一个新闻类别,对应下面ViewPager控件的一个分页面,今日头条, 网易新闻等。

话不多说直接先上原型图,如图1,图2,图3。

首先是新闻Fragment:


import java.io.File;import java.nio.channels.Channel;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import org.json.JSONException;import org.json.JSONObject;import com.android.volley.Request;import com.android.volley.RequestQueue;import com.android.volley.Response;import com.android.volley.VolleyError;import com.android.volley.toolbox.ClearCacheRequest;import com.android.volley.toolbox.DiskBasedCache;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import com.juronggvo.R;import com.juronggvo.adapter.ExerciseAdapter;import com.juronggvo.adapter.NewsAdapter;import com.juronggvo.adapter.PageFragmentAdapter;import com.juronggvo.bean.NewsBean;import com.juronggvo.data.Config;import com.juronggvo.data.Contants;import com.juronggvo.data.GlobalData;import com.juronggvo.ui.inform.InformActivity;import com.juronggvo.ui.news.NewsActivity;import com.juronggvo.utils.Utils;import com.juronggvo.widget.MyListView;import com.juronggvo.widget.NewsTitleTextView;import com.juronggvo.widget.NewsViewPagerAdapter;import com.juronggvo.widget.PullToRefreshView;import com.juronggvo.widget.PullToRefreshView.OnFooterRefreshListener;import com.juronggvo.widget.PullToRefreshView.OnHeaderRefreshListener;import android.R.bool;import android.annotation.SuppressLint;import android.content.Intent;import android.graphics.Color;import android.os.Bundle;import android.os.Handler;import android.provider.Settings.Global;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.LayoutParams;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.DisplayMetrics;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.FrameLayout;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.RelativeLayout;import android.widget.TextView;import android.widget.Toast;/*** 新闻资讯* @description* @data 2016年12月13日* @author yang.yang*/public class NewsFragment extends Fragment implements OnPageChangeListener {private RadioGroup rgChannel;private View view;private ViewPager viewPager;private HorizontalScrollView hvChannel;private PageFragmentAdapter adapter=null; private int page = 1 ;private Object newsLists; private ListfragmentList=new ArrayList();private RequestQueue requestQueue =null;private ExerciseAdapter newsAdapter;private Handler handler = new Handler() ;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {view = inflater.inflate(R.layout.fragment_new, container, false);return view ;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);init() ;setTab(Config.newsPosition,true);}private void init(){requestQueue = Volley.newRequestQueue(getActivity());rgChannel=(RadioGroup)view.findViewById(R.id.rgChannel);viewPager=(ViewPager)view.findViewById(R.id.vpNewsList);hvChannel=(HorizontalScrollView)view.findViewById(R.id.hvChannel);rgChannel.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group,int checkedId) {viewPager.setCurrentItem(checkedId);}});viewPager.setOnPageChangeListener(this);initTab();//动态产生RadioButtoninitViewPager();}private void initTab(){ ListchannelList=ChannelDb.getSelectedChannel();for(int i=0;i<channelList.size();i++){RadioButton rb=(RadioButton)LayoutInflater.from(getActivity()).inflate(R.layout.tab_rb, null);rb.setId(i);rb.setText(channelList.get(i));RadioGroup.LayoutParams params=newRadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,RadioGroup.LayoutParams.WRAP_CONTENT);rgChannel.addView(rb,params);}}private void initViewPager(){adapter=new PageFragmentAdapter(super.getFragmentManager());viewPager.setAdapter(adapter);viewPager.setOffscreenPageLimit(0);}/*** 滑动ViewPager时调整ScroollView的位置以便显示按钮* @param idx*/private void setTab(final int idx,boolean flag){RadioButton rb=(RadioButton)rgChannel.getChildAt(idx);rb.setChecked(true);int left=rb.getLeft();int width=rb.getMeasuredWidth();DisplayMetrics metrics=new DisplayMetrics();super.getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);int screenWidth=metrics.widthPixels;final int len=left+width/2-screenWidth/2;hvChannel.smoothScrollTo(len, 0);//滑动ScroollViewSystem.out.println("len====="+len);}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageSelected(int position) {// TODO Auto-generated method stubsetTab(position,false);}}复制代码

其中要用的fragment_new.xml

ChannelDb 类


import java.nio.channels.Channel;import java.util.ArrayList;import java.util.List;public class ChannelDb {private static ListselectedChannel=new ArrayList();static{selectedChannel.add("热点资讯");selectedChannel.add("开发区概括");selectedChannel.add("最新动态");selectedChannel.add("文化生活");selectedChannel.add("旅游景点");selectedChannel.add("句容资讯");selectedChannel.add("党建园地");selectedChannel.add("重点工程");}public static  ListgetSelectedChannel(){return selectedChannel;}}复制代码

tab_rb.xml

PageFragmentAdapter 类


import java.util.List;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;public class PageFragmentAdapter  extends FragmentPagerAdapter{private String[] tabs  = { "热点资讯", "开发区概括","最新动态","文化生活","旅游景点","句容资讯","党建园地","重点工程" };private FragmentManager fm;public PageFragmentAdapter(FragmentManager fm ){super(fm);this.fm=fm;}/*** 返回每页对应的fragment的对象*/@Overridepublic Fragment getItem(int position) {return NewsFragmentFactory.create(position);}@Overridepublic int getCount() {return tabs.length;}@Overridepublic int getItemPosition(Object object) {return POSITION_NONE;  //没有找到child要求重新加载}}NewsFragmentFactory类import com.juronggvo.ui.fragment.ApplyCarFragment;import com.juronggvo.ui.fragment.ApplyMeetingFragment;import com.juronggvo.ui.fragment.CulLifeFragment;import com.juronggvo.ui.fragment.DevoAreFragment;import com.juronggvo.ui.fragment.HotpointFragment;import com.juronggvo.ui.fragment.ImportantProFragment;import com.juronggvo.ui.fragment.JuRongFragment;import com.juronggvo.ui.fragment.NewRecentFragment;import com.juronggvo.ui.fragment.PartyBuildFragment;import com.juronggvo.ui.fragment.TravelFragment;import android.support.v4.app.Fragment;public class NewsFragmentFactory {/*** 根据不同的position生产对应的fragment对象* @param position* @return*/public static Fragment create(int position){Fragment fragment = null;switch (position) {case 0:fragment = new HotpointFragment();break;case 1:fragment = new DevoAreFragment();break;case 2:fragment = new NewRecentFragment();break;case 3:fragment = new CulLifeFragment();break;case 4:fragment = new TravelFragment();break;case 5:fragment = new JuRongFragment();break;case 6:fragment = new PartyBuildFragment();break;case 7:fragment = new ImportantProFragment();break;}return fragment;}}复制代码

然后在每个pager页面写你自己要的数据 就可以了。

伟大的哲学家我自己曾经说过,有梦想就要大声说出来 ,万丈高楼平地起,能不能行靠自己!

Android 导航栏如何轻松搞定相关推荐

  1. Android沉浸式状态栏工具类,一句代码轻松搞定

    Android沉浸式状态栏工具类,一句代码轻松搞定 博客原文及源码地址:http://jaeger.itscoder.com/android/2016/03/27/statusbar-util.htm ...

  2. 轻松搞定表白女朋友:Android版APP (零基础也可直接下载软件)

    轻松搞定表白女朋友:Android版软件 (零基础也可直接下载软件) 在我们平时生活当中,经常会看到一些表白女朋友的html网页,但是Android端的表白软件可以说是基本没有,笔者在全网搜了一下,就 ...

  3. 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解

    转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解 ...

  4. android如果手机屏锁忘记了怎么办,手机屏幕锁忘记图案怎么办 自己也能轻松搞定...

    手机屏幕锁忘记图案怎么办 自己也能轻松搞定 来源:www.18183.com作者:皮卡时间:2015-04-07 手机功能也越来越强大,甚至可以替代电脑,所以手机中存储着大量的个人隐私,很多用户习惯使 ...

  5. 安卓zip解压软件_[Android]安卓最强解压工具,轻松搞定一键解压!

    哈喽,各位小伙伴们大家好啊,分享君又来给大家更新资源了!最近在使用手机的时候,有很多次就是遇到需要解压的安装包,有时候解压还特别麻烦,手机又不是经常安装解压软件.所以,今天分享君就来分享一款安卓最爱解 ...

  6. 免费报表工具零代码零基础轻松搞定 web 报表

    话说,能制作清单式报表的方式有千千万: 骨灰级的 Excel 控,如果能轻车熟路驾驭 VBA,也能玩出各种花来,再不济借助图表插件外援也能秒杀一众小白选手: 传说中的编程控,只要需求明确没什么做不了的 ...

  7. 函数字节不对齐函数崩溃_Excel中统计字符数,不需要一个一个的数,len函数能轻松搞定...

    简介:要统计Excel单元格中的字符数,不需要一个一个的数,利用len函数就能轻松搞定. 问:什么是len函数? 答:自动统计字符数的函数 问:怎样记住len函数 答:len是length(长度)的简 ...

  8. [JavaScript]只需一行代码,轻松搞定快捷留言-V2升级版

    前天熬了大半宿发了一篇[一行代码轻松搞定快捷留言功能],同时发布了V1.0beta版的快捷留言功能和源代码,之所以是beta版,就是当时感觉虽然基本功能有了,但是还不够完善,特性也不一定合理,今天不知 ...

  9. 读取、回收和重用:使用 Excel、XML 和 Java 技术轻松搞定报告,第 2 部分

    本周您推脱老板的 #432 创新理由了吗?您是否尝试过推脱? 本系列的其他文章 读取.回收和重用:使用 Excel.XML 和 Java 技术轻松搞定报告,第 1 部分 有幸的是,您不必推脱.本系列的 ...

最新文章

  1. 社交媒体分析-恶意内容自动检测相关论文
  2. 数学建模学习笔记——灰色关联分析(评价类)
  3. c语言编程中%g是什么格式
  4. Apache Camel 3.1 – XML路由的快速加载
  5. JMetro 5.5版发布
  6. fanuc roboguide_FANUC机器人虚拟仿真教程:Roboguide弧焊仿真工作站工装添加
  7. 2019年最佳作家奖
  8. 计算机应用基础考试试题,2017计算机应用基础考试试题及答案
  9. phython拟合曲面方程_python数据关系型图表散点图系列曲面拟合图
  10. 全球100ai顶尖科学家_如何为顶尖学校学习AI撰写成功的目标陈述
  11. ASP.net网页导出Excel中文乱码解决方案
  12. linux 下面dev文件,Linux下目录的含义,例如lib中放置了什么文件,dev是什么
  13. 解决方案:LoadLibrary加载动态库失败,错误代码126
  14. C语言----整钱换零钱问题。把1元兑换成1分,2分,5分的硬币,共有多少种不同的兑换方法?(同理n元硬币的兑换方法呢?n元由用户输入)
  15. 组建家庭计算机网络过程是怎么样的,如何组建完善的家庭无线网络操作步骤
  16. ora-01652无法通过128(在表空间temp中)扩展temp段
  17. python写生日祝福语大全_【Python 1-6】Python教程之——数字
  18. 输入今天日期输出明天日期
  19. M1芯片的mac下的Xcode12以上版本编译报错 this target. for architecture arm64等问题解决方案
  20. Python中jieba库的使用

热门文章

  1. UA MATH523A 实分析3 积分理论例题 讨论原函数的连续性
  2. 图解观察托管程序线程
  3. OI常用的常数优化小技巧
  4. unittest框架(三)unittest+yaml数据驱动
  5. Linux wine
  6. break 与continue 语句
  7. iOS 动画系列之动画解释
  8. C#导出Excel和相关打印设置
  9. VC小技巧(三)视图
  10. 3.4 参数展开-机器学习笔记-斯坦福吴恩达教授