Android实现网易新闻客户端首页效果

关于实现网易新闻客户端的界面,以前写过很多博客,请参考:

Android实现网易新闻客户端效果

Android实现网易新闻客户端侧滑菜单(一)

Android实现网易新闻客户端侧滑菜单(二)

今天用ViewPager + FragmentAdapter + ViewPagerIndicator来实现。

ViewPagerIndicator是一款分页指标小部件兼容ViewPager,封装上做得非常不错,目前已为众多知名应用所使用。具体API的使用,大家可以下载官方demo示例研究研究就知道啦!

下载地址:https://github.com/JakeWharton/ViewPagerIndicator

sample是提供给我们的例子,library是库工程,我们需要将其作为我们自己项目的依赖库,我们新建一个Android工程,将library导入工程我就不介绍了。

注:

Eclipse: 如果你新建的项目libs目录下面有android-support-v4.jar,你要将其删除,因为ViewPageIndicator里面有这个库,我们项目中不允许两个android-support-v4.jar,不删除我们的项目不能编译的。

Android Studio: 直接import module就行。

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" > 

 <include layout="@layout/activity_top" /> 

 <com.viewpagerindicator.TabPageIndicator
 android:id="@+id/indicator"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:background="@android:color/transparent" >
 </com.viewpagerindicator.TabPageIndicator> 

 <android.support.v4.view.ViewPager
 android:id="@+id/viewpager"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#EEF3FA">
 </android.support.v4.view.ViewPager>
</LinearLayout>

布局很简单,顶部引入了一个activity_top.xml的布局,具体内容可以自己定义。
MainActivity.java

package com.jackie.neteasenews; 

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager; 

import com.viewpagerindicator.TabPageIndicator; 

import java.util.ArrayList;
import java.util.List; 

public class MainActivity extends FragmentActivity {
 private TabPageIndicator mTabPageIndicator;
 private ViewPager mViewPager;
 private ViewPagerIndicatorAdapter mAdapter; 

 private HeadlineFragment mHeadlineFragment;
 private EnjoyFragment mEnjoyFragment;
 private HotspotFragment mHotspotFragment;
 private SportFragment mSportFragment;
 private HouseFragment mHouseFragment;
 private List<Fragment> mFragmentList; 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main); 

 initView();
 } 

 private void initView() {
 mTabPageIndicator = (TabPageIndicator) findViewById(R.id.indicator);
 mViewPager = (ViewPager) findViewById(R.id.viewpager); 

 mHeadlineFragment = new HeadlineFragment();
 mEnjoyFragment = new EnjoyFragment();
 mHotspotFragment = new HotspotFragment();
 mSportFragment = new SportFragment();
 mHouseFragment = new HouseFragment(); 

 mFragmentList = new ArrayList<>();
 mFragmentList.add(mHeadlineFragment);
 mFragmentList.add(mEnjoyFragment);
 mFragmentList.add(mHotspotFragment);
 mFragmentList.add(mSportFragment);
 mFragmentList.add(mHouseFragment); 

 mAdapter = new ViewPagerIndicatorAdapter(getSupportFragmentManager(), mFragmentList);
 mViewPager.setAdapter(mAdapter); 

 //实例化TabPageIndicator然后设置ViewPager与之关联
 mTabPageIndicator.setViewPager(mViewPager, 1);
 }
} 

ViewPagerIndicatorAdapter.java

package com.jackie.neteasenews; 

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter; 

import java.util.List; 

public class ViewPagerIndicatorAdapter extends FragmentPagerAdapter {
 private List<Fragment> mFragmentList; 

 public static String[] TITLES = new String[] { "头条", "娱乐", "热点", "体育", "房产" }; 

 public ViewPagerIndicatorAdapter(FragmentManager fm, List<Fragment> fragmentList) {
 super(fm);
 this.mFragmentList = fragmentList;
 } 

 @Override
 public Fragment getItem(int position) {
 return mFragmentList.get(position);
 } 

 @Override
 public int getCount() {
 return mFragmentList.size();
 } 

 @Override
 public CharSequence getPageTitle(int position) {
 return TITLES[position];
 }
} 

代码很简单,但是有一点,上面的Indicator是系统默认的,不太好看,所以还需要在styles.xml添加下面的样式:

<style name="StyledTabPageIndicator" parent="@android:style/Theme.Light">
 <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>
 <item name="android:windowNoTitle">true</item>
 <item name="android:animationDuration">5000</item>
 <item name="android:windowContentOverlay">@null</item>
 </style> 

 <style name="CustomTabPageIndicator" parent="Widget">
 <item name="android:gravity">center</item>
 <item name="android:background">@drawable/tab_indicator</item>
 <!--<item name="android:background">@drawable/vpi__tab_indicator</item>-->
 <item name="android:paddingLeft">22dip</item>
 <item name="android:paddingRight">22dip</item>
 <item name="android:paddingTop">8dp</item>
 <item name="android:paddingBottom">8dp</item>
 <item name="android:textAppearance">@style/CustomTabPageIndicator.Text</item>
 <item name="android:textSize">16sp</item>
 <item name="android:maxLines">1</item>
 </style> 

 <style name="CustomTabPageIndicator.Text" parent="Widget">
 <item name="android:textColor">@drawable/tab_text</item>
 </style>

注意:开发中过程中跟Fragment相关的类,导入包时会提示两个包android.app 和 android.support.v4.app,切记,要保证所有类都导入同一个包下的,否则会编译报错。

效果图如下:

附上源码地址:https://github.com/shineflower/NeteaseNews.git

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android实现网易新闻客户端侧滑菜单(2)

    前面已经讲过通过三方开源库SlideMenu来实现这种效果,请参考Android实现网易新闻客户端侧滑菜单(一) 今天通过自定义View来实现这种功能. 代码如下: SlideMenu.java package com.jackie.slidemenu.view; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.view

  • Android网络编程之简易新闻客户端

    一. 通过一个案例"新闻客户端"向大家演示AsyncHttpClient和SmartImageView的综合使用. 运行结果如下: 1.首先我们了解一下相关知识: SmartImageView的使用 市面上一些常见软件,例如手机QQ.天猫.京东商场等,都加载了大量网络上的图片.用Android自带的API实现这一功能十分麻烦而且耗时.为此,编程爱好者开发了一个开源项目--SmartImageView. https://github.com/loopj/android-smart-ima

  • Android实现网易新闻客户端侧滑菜单(1)

    Android中很多产品(比如360手机助手.网易菜单...)都采用侧滑菜单的展现形式,采用这种展现形式 1.能把更多的展现内容都存放在菜单中 2.设计上也能体现出视觉效果 现在这种交互方式越来越流行了,虽然这种交互方式可以通过自定义组件的方式来实现,但是用三方开源库更简单. SlidingMenu:SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果. 地址:https://github.com/

  • Android 仿网易新闻客户端分类排序功能

    先来看看网易新闻客户端以及自己实现的效果图,效果当然还是网易的好 gridviewsort.gif 如何实现拖拽一个Item 用WindowManager添加一个ImageView,并且将这个ImageView的显示图片设置成被拖拽item的截图,截图可以通过View的getDrawingCache获得.拖拽的时候,隐藏原始的item.处理触摸事件的ActionMove,调整ImageView的位置,跟随手指移动.在ActionUp的时候removeView GridView @Override

  • 基于PHP后台的Android新闻浏览客户端

    本文实例为大家分享了Android新闻浏览客户端,基于php后台,供大家参考,具体内容如下 1.使用HBuilder进行PHP环境配置,测试是否可以查询MySQL语句,之前都已经详细说明过了. 2.此处php后台实现mysql的查询功能,并以JSON数据格式返回个客户端 在PHP此处建立一个mysql_connect.php文件,实现数据库的连接,并设置字符集格式. <?php $con = mysql_connect("localhost","root",&

  • Android打造属于自己的新闻平台(客户端+服务器)

    完全属于自己的新闻展示平台,展示给大家,希望大家喜欢. 一.新闻的数据库的构建 脚本代码如下:(使用的mysql5.0 数据库) SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; -- Database: `newsdemo` -- 表的结构 `news` CREATE TABLE IF NOT EXISTS `news` ( `id` int(10) NOT NULL AUTO_IN

  • Android模拟实现网易新闻客户端

    首先我们先看一下要模拟的界面 我们主要实现的就是ListView解析json文件中的数据,UI布局很简单不做赘述. 这里我们需要一个服务器来实现数据的动态更新, 这里我们用到的是Tomcat8.0. 首先我们把需要解析的json文件放置到Tomcat的webapp文件下的ROOT里面,方便我们解析. 首先我们创建一个JsonParse类用来解析json文件: package cn.edu.bzu.myapplication.Tools; import com.google.gson.Gson;

  • Android实现网易新闻客户端首页效果

    关于实现网易新闻客户端的界面,以前写过很多博客,请参考: Android实现网易新闻客户端效果 Android实现网易新闻客户端侧滑菜单(一) Android实现网易新闻客户端侧滑菜单(二) 今天用ViewPager + FragmentAdapter + ViewPagerIndicator来实现. ViewPagerIndicator是一款分页指标小部件兼容ViewPager,封装上做得非常不错,目前已为众多知名应用所使用.具体API的使用,大家可以下载官方demo示例研究研究就知道啦! 下

  • android listview实现新闻列表展示效果

    本文实例为大家分享了android listview列表展示效果的具体代码,供大家参考,具体内容如下 1.封装一些新闻数据 2.使用listview展示出来 3.设置条目点击事件,点击后跳转浏览器查看新闻 package com.itheima74.newscustom.domain; import android.graphics.drawable.Drawable; /** * Created by My on 2016/11/8. */ public class NewsBean { pu

  • Android实现网易严选标签栏滑动效果

    标签栏是一个非常常见的控件,似乎也是一个比较简单的控件,但如果在标签下方加个下划线的话,就还是可以玩出挺多花来的. 网易严选的标签栏就做的很不错,里面隐藏着诸多细节: 手动滑动页面,下划线会跟着滑动. 选择一个标签后,下划线会有滑动过去的动画. 选择最左端或最右端的标签,标签栏会进行滑动,使得标签向中间靠拢(如果可以滑的话). 仔细分析下,需要在简单标签栏的基础上实现以下逻辑: 画出下划线. 监听手动滑动页面事件,实时更新下划线位置. 切换标签时,开始下划线滑动的动画,并判断是否要同时滑动标签栏

  • 仿网易新闻客户端头条ViewPager嵌套实例

    要点: 1.重写组件public boolean onInterceptTouchEvent(MotionEvent event)方法 2.正确使用requestDisallowInterceptTouchEvent(boolean flag)方法 关于以上两个方法,请大家多看看相关介绍,这里就不在叙述了^_^ 接下来上例子: 1.外层ViewPager布局 (假定文件名为viewpager_layout.xml) 复制代码 代码如下: <?xml version="1.0" e

  • Android实现京东App分类页面效果

    今天群里有人问了关于仿京东App分类页面的实现,而我之前正好查过这方面的资料,手上正好有一个demo,正好分享给大家看看,个人觉得效果棒棒哒! 首先来看效果图吧 是不是很6呢,来分析这个demo的主体构成吧,顶部为搜索栏,左侧是scroview,不要担心优化问题,因为scroview里面的TextView是动态生成的,完全不用担心优化问题,右侧是viewPager,Scroview可以控制viewPager的滑动,反之ViewPager也可以控制scroview的滑动. 闲话少说,直接上代码:

  • Android组件DrawerLayout仿网易新闻v4.4侧滑菜单

    概述 今天这篇博客将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情,因为DrawerLayout作为Android组件是Google后来在android中添加的,在android.support.v4包下.那么,DrawerLayout是一个怎么的组件呢?我们知道,当我们使用Android上各类App的时候,是不是注意过App主页上通常有一个"侧滑菜单"?关于侧滑菜单的实现,我在前面博客里有一些介绍,想多些

随机推荐