1. 程式人生 > >Android ViewPager和Fragment實現頂部導航介面滑動效果、標籤下的tab位置

Android ViewPager和Fragment實現頂部導航介面滑動效果、標籤下的tab位置

在專案中,我們常常需要實現介面滑動切換的效果。例如,微信介面的左右滑動切換效果。那這種效果是怎麼實現的?今天我就帶大家簡單瞭解ViewPager,並通過例項來實現該效果。

一. ViewPager 官方API

首先我們來看一下ViewPager官方給出的解釋,如圖:


具體意思如下:

Layout管理器允許使用者可以在頁面上,左右滑動來翻動頁面。你可以考慮實現PagerAdapter介面來顯示該效果。

ViewPager很多時候會結合Fragment一塊使用,這種方法使得管理每個頁面的生命週期變得很方便。其中,有一些adapter的具體實現,可以適合於這種

ViewPager結合Fragment使用的情況。這些adapter包括:FragmentPagerAdapter,FragmentStatePagerAdapter

而本文就是通過ViewPager結合Fragment利用FragmentpagerAdapter介面卡來實現左右滑動的效果。

二.效果如下:


三.程式碼實現:

1.xml佈局檔案

1>主佈局activity_main.xml

  1. <spanstyle="font-family:Microsoft YaHei;font-size:18px;"><LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:orientation="vertical">
  6.     <includelayout="@layout/activity_main_top_tab"/>
  7.     <android.support.v4.view.ViewPager
  8.         android:id="@+id/id_page_vp"
  9.         android:layout_width="match_parent"
  10.         android:layout_height="0dp"
  11.         android:layout_weight="1">
  12.     </android.support.v4.view.ViewPager>
  13. </LinearLayout></span>
注意:佈局中載入android.support.v4.view.ViewPager,所有需要引入android-support-v4.jar(正常情況系統會自動引入)

2>頂部導航activity_main_top_tab.xml

  1. <span style="font-family:Microsoft YaHei;font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="wrap_content"
  5.     android:orientation="vertical" >  
  6.     <LinearLayout  
  7.         android:id="@+id/id_switch_tab_ll"
  8.         android:layout_width="match_parent"
  9.         android:layout_height="wrap_content"
  10.         android:orientation="horizontal"
  11.         android:baselineAligned="false"
  12.         >  
  13.         <LinearLayout  
  14.             android:id="@+id/id_tab_chat_ll"
  15.             android:layout_width="match_parent"
  16.             android:layout_height="wrap_content"
  17.             android:layout_weight="1"
  18.             android:background="@drawable/guide_round_selector"
  19.             android:gravity="center"
  20.             android:orientation="horizontal"
  21.             android:padding="10dip" >  
  22.             <TextView  
  23.                 android:id="@+id/id_chat_tv"
  24.                 android:layout_width="wrap_content"
  25.                 android:layout_height="wrap_content"
  26.                 android:gravity="center"
  27.                 android:text="聊天"
  28.                 android:textColor="#0000FF"
  29.                 android:textSize="15dip" />  
  30.         </LinearLayout>  
  31.         <LinearLayout  
  32.             android:id="@+id/id_tab_friend_ll"
  33.             android:layout_width="match_parent"
  34.             android:layout_height="wrap_content"
  35.             android:layout_weight="1"
  36.             android:background="@drawable/guide_round_selector"
  37.             android:clickable="true"
  38.             android:gravity="center"
  39.             android:orientation="horizontal"
  40.             android:padding="10dip"
  41.             android:saveEnabled="false" >  
  42.             <TextView  
  43.                 android:id="@+id/id_friend_tv"
  44.                 android:layout_width="wrap_content"
  45.                 android:layout_height="wrap_content"
  46.                 android:gravity="center"
  47.                 android:text="好友"
  48.                 android:textColor="#000000"
  49.                 android:textSize="15dip" />  
  50.         </LinearLayout>  
  51.         <LinearLayout  
  52.             android:id="@+id/id_tab_contacts_ll"
  53.             android:layout_width="match_parent"
  54.             android:layout_height="wrap_content"
  55.             android:layout_weight="1"
  56.             android:background="@drawable/guide_round_selector"
  57.             android:focusable="false"
  58.             android:gravity="center"
  59.             android:orientation="horizontal"
  60.             android:padding="10dip" >  
  61.             <TextView  
  62.                 android:id="@+id/id_contacts_tv"
  63.                 android:layout_width="wrap_content"
  64.                 android:layout_height="wrap_content"
  65.                 android:gravity="center"
  66.                 android:text="通訊錄"
  67.                 android:textColor="#000000"
  68.                 android:textSize="15dip" />  
  69.         </LinearLayout>  
  70.     </LinearLayout>  
  71.     <ImageView  
  72.         android:id="@+id/id_tab_line_iv"
  73.         android:layout_width="200dp"
  74.         android:layout_height="wrap_content"
  75.         android:contentDescription="tab"
  76.         android:background="@drawable/tab_selected_pressed_holo" >  
  77.     </ImageView>  
  78.     <View  
  79.         android:layout_width="match_parent"
  80.         android:layout_height="1dp"
  81.         android:background="#000000" />  
  82. </LinearLayout></span>  

3>Fragment顯示佈局activity_tab_chat.xml,activity_tab_contacts.xml,activity_tab_friend.xml(只給出一個,其他類似)
  1. <span style="font-family:Microsoft YaHei;font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:orientation="vertical" >  
  6.     <TextView  
  7.         android:layout_width="match_parent"
  8.         android:layout_height="match_parent"
  9.         android:text="聊天介面"
  10.         android:textColor="#FF0000"
  11.         android:textSize="20sp"
  12.         android:gravity="center"
  13.         ></TextView>  
  14. </LinearLayout></span>  
4>主函式MainActivity.java
  1. <span style="font-family:Microsoft YaHei;font-size:18px;">package com.example.viewpagerdemo;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import android.graphics.Color;  
  5. 相關推薦

    Android ViewPagerFragment實現頂部導航介面滑動效果標籤tab位置

    在專案中,我們常常需要實現介面滑動切換的效果。例如,微信介面的左右滑動切換效果。那這種效果是怎麼實現的?今天我就帶大家簡單瞭解ViewPager,並通過例項來實現該效果。 一. ViewP

    使用TabLayoutViewPagerFragment實現頂部選單可滑動切換

    效果圖如下 首先,要使用控制元件需要新增design library,在Android Studio中新增 compile 'com.android.support:design:23.4.0' 然後是佈局檔案 <?xml version="1.0" encod

    Android ViewPagerFragment實現仿微信導航介面滑動效果

    1 先看看實現的效果: ps:上面每一幀Fragment中,包含是來自網路的圖片; 實現ViewPager+Fragment的頁面滑動和底部導航原理 主佈局檔案如下: <?xml version="1.0" encoding="utf-8"?> <L

    Android 應用開發----7. ViewPager+Fragment一步步打造頂部導航介面滑動效果

    ViewPager+Fragment一步步打造頂部導航介面滑動效果 在許多應用中,我們常常用到這麼一個效果: 可以看到,由於現在的應用資料經常需要涉及到多個模組,所以常常需要使用滑動標籤在多個頁面之間跳轉,實現這樣的效果有很多種方式(比如系統自帶的tabhost控

    教你如何使用ViewPager+Fragment一步步打造頂部導航介面滑動效果

    最近在整理以前的知識點,重新碰到了以前專案中的一個滑動分頁的效果,就打算寫這麼一篇文章分享一下ViewPager的經典使用 在許多應用中,我們常常用到這麼一個效果: 可以看到,由於現在的應用資料經常需要涉及到多個模組,所以常常需要使用滑動標籤在多個頁面之間跳轉,實現這樣

    不用ViewPagerFragment實現滑動頁面的效果

    這是一篇被逼出來的文章。 一入SDK深似海,從此jar包是路人,沒錯,你以為我願意不用ViewPager和Fragment啊,因為SDK為了減少包體大小不能用v4的包啊!坑爹的v4包居然有1M多,你們可真能寫啊。我相信一定有朋友會建議說,把v4包裡相關的類摳出

    Android開發之ViewPager+ActionBar+Fragment實現響應式可滑動Tab

                      按照一般的思路,我們或許會這麼做:首先,使用getActionBar()方法獲得操作欄,然後我們將操作欄的導航模式設定為Tab,並新增一些Tab,然後實現TabListener介面;其次,我們將多個佈局通過Inflater()方法變成View,然後

    利用ViewPagerFragment實現頁卡切換

      在微信和QQ中,頁面可以通過滑動切換,在Android應用開發中,利用ViewPager和Fragment可以實現這一功能。  開發工具:Android Studio 3.0  程式碼示例:  activity_a.xml(佈局):<android.support.

    結合TabViewPagerFragment實現簡單分頁滑動

    在APP設計當中,使用ViewPager和Fragment來實現分頁滑動並不少見,該設計可以利用少量的空間來實現多內容的展示。效果圖如下: 以下是實現該功能的程式碼: MainActivity public class MainActivity e

    通過CardViewRecyclerView實現橫向卡片式滑動效果

    現在來介紹兩種控制元件RecyclerView和CardView,並通過例項將它們結合在一起實現一種橫向卡片式滑動效果. 1.RecyclerView RecyvlerView是android SDK 新增加的一種控制元件,也被官方推薦代替ListVie

    Android仿小米商城底部導航欄之二(BottomNavigationBarViewPagerFragment的聯動使用)

    簡介 在前文《Android仿小米商城底部導航欄(基於BottomNavigationBar)》我們使用BottomNavigationBar控制元件模仿實現了小米商城底部導航欄效果。接下來更進一步的,我們將通過BottomNavigationBar控制元件和

    android Fragment實現APP主介面Tab頁面切換點選事件

    Fragment 頁面切換不能滑動 所以對於listview 可以新增的左右滑動事件 ,不會有衝突例如(QQ的好友列表的刪除) Fragment 和viewpager 的區別 Viewpager 的事件都需要寫在 MainActivity 使

    Android開發ViewPagerFragment結合使用實現新聞類app( 三 )(基本成型的app)

    //該類為我們的標題欄的自定義View public class MyLinearLayout extends LinearLayout { public MyLinearLayout(Context context, AttributeSet attrs) { super(cont

    Android Studio使用ViewPager+Fragment實現仿微信滑動切換介面

    前言 微信的滑動切換獲得大家一致好評,在我們開發的過程中我們也經常模仿微信的導航效果。 首先看下效果圖 效果還算不錯,可以滑動切換和點選切換,微信介面用listview展示資料,通訊錄介面用的recyclerview展示資料,在接下來就帶著大家一一

    TabLayout+ViewPager+Fragment實現頂部或底部導航

    以前看慕課網的教程,寫過一個微信Tab選項卡切換的例子,使用的是ViewPager+Fragment來實現的,說實話,當時為了實現一些效果,還是寫了蠻多的程式碼,但是,今天介紹的TabLayout+ViewPager+Fragment實現導航欄可以使用很少的程式

    TabLayout與viewpager實現頂部導航

    TabLayout是design包的一個元件,常與viewpager搭配使用,主要是因為用法簡單,而且效果也好。下面是效果圖 接下來說說用法:首先匯入依賴 compile 'com.android.support:design:25.3.1' 佈局檔案:activity_

    TabLayout+ViewPager+Fragment實現底部導航

    MainActivity extends AppCompatActivity { private TabLayout mTabLayout; //Tab 文字 private final int[] TAB_TITLES = new int[]{R.string.weixin,R.string.con

    安卓介面ViewpagerTablayout實現滑動介面

    摘要:六部實現選項卡介面   一. 在gradle檔案新增以下程式碼: implementation 'com.android.support:design:28.0.0'  在gradle檔案新增以上程式碼後,才能使用Tablayout(版本號28.0.0是我做實驗時

    Android ListViewFragment結合使用,類似於某電商的實現,拿來就能用,詳細標註適合新手

    一個類似於某電商的實現,讓菜鳥們理解Activity與Fragment之間的引數是如何互動的。 包結構: 執行後的效果 分析: 左側ListView可上下拖動,點選不同的item會影響右側Fragment的內容。 廢話不多說,上程式碼(

    Android popwindowfragment結合 左側彈出拉選單 切換介面

          延續上一篇文章Android 實現對話方塊圓角功能 ,在專案推進的過程當中,之前是已經用popwindow實現了點選按鈕,在按鈕下方彈出下拉選單,實現了類似微信右上角加好友的功能,有興趣的朋友,可以下載這個資源。迴歸主題,之前popwindow的使用,是固定在