国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android實(shí)現(xiàn)網(wǎng)易新聞客戶(hù)端首頁(yè)效果

2019-12-12 04:46:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

關(guān)于實(shí)現(xiàn)網(wǎng)易新聞客戶(hù)端的界面,以前寫(xiě)過(guò)很多博客,請(qǐng)參考:

Android實(shí)現(xiàn)網(wǎng)易新聞客戶(hù)端效果

Android實(shí)現(xiàn)網(wǎng)易新聞客戶(hù)端側(cè)滑菜單(一)

Android實(shí)現(xiàn)網(wǎng)易新聞客戶(hù)端側(cè)滑菜單(二)

今天用ViewPager + FragmentAdapter + ViewPagerIndicator來(lái)實(shí)現(xiàn)。

ViewPagerIndicator是一款分頁(yè)指標(biāo)小部件兼容ViewPager,封裝上做得非常不錯(cuò),目前已為眾多知名應(yīng)用所使用。具體API的使用,大家可以下載官方demo示例研究研究就知道啦!

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

sample是提供給我們的例子,library是庫(kù)工程,我們需要將其作為我們自己項(xiàng)目的依賴(lài)庫(kù),我們新建一個(gè)Android工程,將library導(dǎo)入工程我就不介紹了。

注:

Eclipse: 如果你新建的項(xiàng)目libs目錄下面有android-support-v4.jar,你要將其刪除,因?yàn)閂iewPageIndicator里面有這個(gè)庫(kù),我們項(xiàng)目中不允許兩個(gè)android-support-v4.jar,不刪除我們的項(xiàng)目不能編譯的。

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> 

布局很簡(jiǎn)單,頂部引入了一個(gè)activity_top.xml的布局,具體內(nèi)容可以自己定義。
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);   //實(shí)例化TabPageIndicator然后設(shè)置ViewPager與之關(guān)聯(lián)  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[] { "頭條", "娛樂(lè)", "熱點(diǎn)", "體育", "房產(chǎn)" };   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];  } } 

代碼很簡(jiǎn)單,但是有一點(diǎn),上面的Indicator是系統(tǒng)默認(rèn)的,不太好看,所以還需要在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> 

注意:開(kāi)發(fā)中過(guò)程中跟Fragment相關(guān)的類(lèi),導(dǎo)入包時(shí)會(huì)提示兩個(gè)包android.app 和 android.support.v4.app,切記,要保證所有類(lèi)都導(dǎo)入同一個(gè)包下的,否則會(huì)編譯報(bào)錯(cuò)。

效果圖如下:

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 高陵县| 淮北市| 边坝县| 绥化市| 社会| 南木林县| 灌阳县| 青海省| 阿荣旗| 达尔| 田东县| 韶山市| 江山市| 韶山市| 临清市| 五指山市| 泸州市| 平潭县| 囊谦县| 德安县| 封丘县| 杂多县| 涟水县| 新和县| 吉林省| 浪卡子县| 昌邑市| 阳江市| 林西县| 印江| 邹城市| 凌海市| 县级市| 雷波县| 鄢陵县| 都安| 上高县| 南丹县| 宜兰县| 即墨市| 明光市|