看了别人的博客,学着自己写出来,原文:http://blog.csdn.net/lowprofile_coding/article/details/51170252。

实现开发者头条的框架,今天先实现导航页。

逻辑:

app若不是第一次打开,则进入主页面;如是:则进入导航页。
导航页有图片,下方有指示灯,当滑到最后一页的时候显示“开启我的头像”,即进入主页面。

图:

布局:

activity_main.xml

没有添加内容

activity_guide.xml

指示灯放在了LinearLayout中,最后一页显示 是个TextView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><android.support.v4.view.ViewPager
        android:id="@+id/viewpager_guild"android:layout_width="wrap_content"android:layout_height="wrap_content" /><LinearLayout android:id="@+id/layout_indicator_guild"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:layout_centerHorizontal="true"android:layout_alignParentBottom="true"android:layout_marginBottom="20dp"android:orientation="horizontal"></LinearLayout><TextView android:id="@+id/tv_guild"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_above="@id/layout_indicator_guild"android:layout_marginBottom="20dp"android:background="@drawable/tv_guild_shape"android:visibility="invisible"android:padding="10dp"android:gravity="center"android:textColor="#039BE5"android:textSize="18sp"android:text="开启我的头像"/></RelativeLayout>

其中:tv_guild_shape.xml
stroke:边框; width:边框宽度, color:边框颜色。
solid:背景; color:背景色。
corners:圆角; radius:角度。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" ><stroke android:width="1dp"android:color="#039BE5"/><solid android:color="#F5F5F5"/><corners android:radius="5dp"/>
</shape>

4张效果图分别是:



代码

Step 1 :判断是不是第一次进入

根据SharePerference中存的值来判断。

//判断是不是第一次进入
SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
boolean isFirst = sp.getBoolean("isFirst", true);
if (!isFirst) {//进入主页面Intent intent = new Intent(context, MainActivity.class);startActivity(intent);GuildActivity.this.finish();
}
//第一次进入后修改为false
sp.edit().putBoolean("isFirst", false).commit();

接下来就是第一次进入需要进行的操作,viewpager设置adapter + 指示灯 + 最后一页提示

Step2 : viewpager设置adapter

initData();
GuildPagerAdapter adapter = new GuildPagerAdapter(context, list);
viewPager.setAdapter(adapter);viewPager.setOnPageChangeListener(this);

其中:initData()是初始化viewpager的存放的4张图片,代码如下

private void initData() {list.clear();ImageView iv1 = new ImageView(context);ImageView iv2 = new ImageView(context);ImageView iv3 = new ImageView(context);ImageView iv4 = new ImageView(context);iv1.setImageResource(R.drawable.tutorial_1);iv2.setImageResource(R.drawable.tutorial_2);iv3.setImageResource(R.drawable.tutorial_3);iv4.setImageResource(R.drawable.tutorial_4);//      iv1.setBackgroundResource(R.drawable.tutorial_1);
//      iv2.setBackgroundResource(R.drawable.tutorial_2);
//      iv3.setBackgroundResource(R.drawable.tutorial_3);
//      iv4.setBackgroundResource(R.drawable.tutorial_4);//居中显示,若设置setBackgroundResource(),图片会铺满背景,而图片又没那么大,有种放大的感觉iv1.setScaleType(ScaleType.CENTER);iv2.setScaleType(ScaleType.CENTER);iv3.setScaleType(ScaleType.CENTER);iv4.setScaleType(ScaleType.CENTER);list.add(iv1);list.add(iv2);list.add(iv3);list.add(iv4);
}

接着是viewpager的adapter:GuildPagerAdapter

需要重写4个方法

package com.cqc.developerheadlinecqc.adapter;import java.util.List;import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;public  class GuildPagerAdapter extends PagerAdapter {private Context context;private List<ImageView> list;public GuildPagerAdapter(Context context , List<ImageView> list) {super();this.context = context;this.list = list;}@Overridepublic int getCount() {return list.size();}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(list.get(position));return list.get(position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View)object);}
}

接着给viewpager设置滑动监听:viewPager.setOnPageChangeListener(this);在监听中改变指示灯的背景和最后一页显示。

@Override
public void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {// TODO Auto-generated method stub}
@Override
public void onPageSelected(int position) {if (position == list.size() -1) {tv.setVisibility(View.VISIBLE);} else{tv.setVisibility(View.INVISIBLE);}for (int i = 0; i < indicatorList.size(); i++) {if (i == position) {indicatorList.get(i).setBackgroundResource(R.drawable.page_indicator_focused);} else{indicatorList.get(i).setBackgroundResource(R.drawable.page_indicator_unfocused);}}
}
@Override
public void onPageScrollStateChanged(int state) {// TODO Auto-generated method stub}

去掉标题:

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme"><!-- All customizations that are NOT specific to a particular API-level can go here. --><item name="android:windowNoTitle">true</item>
</style>

源码:http://download.csdn.net/detail/ss1168805219/9627342
轮播图的切换请移步:http://blog.csdn.net/ss1168805219/article/details/52282750 和http://blog.csdn.net/ss1168805219/article/details/52294657

开发者头条(一):导航页相关推荐

  1. 带你实现开发者头条(二) 实现左滑菜单

    今天开始模仿开发者头条的侧滑菜单,是本系列第二篇文章,相信大家已经看到很多app使用这种侧滑.今天我来教大家用android自带DrawerLayout控件实现. DrawerLayout是Suppo ...

  2. 带你实现开发者头条APP(四)---首页优化(加入design包)

    一 .前言 上次模仿开发者头条首页实现了一个版本,给345大神,我的产品经理一看,又被鄙视了一把,说还在用老的技术,于是乎这三天把整个design包研究了一遍,然后把首页的代码几乎重写了一遍....顺 ...

  3. 开发者头条(五):实现recyclerview的上拉加载 + 下拉刷新

    学习Ansen的博客,原文:带你实现开发者头条APP(五)–RecyclerView下拉刷新上拉加载 ,这一篇写的很详细. 知识点 今天主要是实现recyclerview的上拉加载跟多和下拉刷新,依赖 ...

  4. 带你实现开发者头条(二) 实现左滑菜单

    title: 带你实现开发者头条(二) 实现左滑菜单 tags: 左滑菜单,android 自带侧滑,DrawerLayout grammar_cjkRuby: true --- 今天开始模仿开发者头 ...

  5. Android仿微信底部菜单栏+今日头条顶部导航栏

    背景 Android应用几乎都会用到底部菜单栏,在Material Design还没有出来之前,TabHost等技术一直占主流,现在Google新sdk中提供了TabLayout类可以便捷的做出底部菜 ...

  6. 开发者头条 2016 年度盘点系列文章

    2016 年开发者头条十大获赞最多文章 0. 如果有人问你数据库的原理,叫他看这篇文章 如果你对了解一个数据库感兴趣,但是从未有时间或意愿来刻苦钻研这个内容广泛的课题,你应该喜欢这篇文章. 1. 吐血 ...

  7. 快速部署个人导航页:美好的一天从井然有序开始

    很多人都习惯使用浏览器自带的收藏夹来管理自己的书签,然而收藏夹存在着一些问题. 经过长时间的累积,一些高频使用的重要网站和偶尔信手收藏的链接混在了一起,收藏夹因为内容过多而显得杂乱无章: 收藏夹没有什 ...

  8. 自定义导航页_带你回归“真”的导航页

    曾经 浏览器主页是我们流向各大网站的要道 从这里 我们可以轻而易举的去往想要去的网站 特别是在信息和专业性越来聚集的今天 传统的主页难免令人有些审美疲劳 或者说花里胡哨 hao123 2345 是这些 ...

  9. 二次元HTML导航页网站源码

    简介: 二次元HTML导航页网站源码,非常好看的一款单页源码,感兴趣的同学可以看看! 网盘下载地址: http://kekewl.org/p6BqAjZzdqL0 图片:

  10. 高端大气上档次的官网介绍导航页源码

    介绍: 一款非常高端大气上档次官网导航页,非常利于收录,可以下载看看 网盘下载地址: http://kekewl.cc/jw8xBUiCkGm0 图片:

最新文章

  1. 根据身份证号码导出生日和性别(JavaScript代码)
  2. python进阶:闭包、map/reduce/filter函数、lambda函数、装饰器
  3. QLibrary Class Reference(qt加载外部库)
  4. TRUNCATE,DELETE,DROP的区别
  5. 认识Windows Communication Foundation
  6. 一个轻量级分布式RPC框架--NettyRpc
  7. Spring JDBC和JdbcTemplate CRUD与DataSource示例
  8. BZOJ5243 : [Lydsy2017省队十连测]绝版题
  9. Cannot open precompiled header file: 'Debug/shuju1.pch': No such file or directory
  10. 破圈!不止于浏览器,WebAssembly 2020 大事记
  11. ubuntu 更新python2.7 ssl 错误解决
  12. SWIG 转换C++接口为Java接口
  13. baum welch java_Baum Welch估计HMM参数实例
  14. 计算机主板的电路,电脑主板电路图全).pdf
  15. Algorithm:数学建模大赛(CUMCM/NPMCM)之05B《DVD在线租赁》
  16. 2019数据安装勾选_Origin2019下载和安装教程
  17. 华为数字化IT应用工程师面试经历
  18. 从零开始学凸优化理论与KKT条件
  19. 洛谷题解P1428 小鱼比可爱
  20. 【AviUtl】动画效果,简易Glitch++(派生),学习笔记

热门文章

  1. 多核支持向量机原理及实现
  2. Log4j的配置与使用详解
  3. python爬取五百丁ppt模板(有图+有代码)
  4. 自定义QLabel 控件
  5. [精品]CAD批量处理工具
  6. VS 格式化代码快捷键
  7. 一篇文章教你,破解百度网盘加密文件,学会这个举一反二
  8. CSS 零基础到实战(05)布局、盒子模型、弹性盒子【前端就业课 第二阶段】
  9. 抖音SEO优化源码,抖音搜索排名系统,技术理论分析搭建。
  10. Vue Elements 可用的省市县数据