91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ViewPager如何實現輪播圖Banner/引導頁Guide

發布時間:2021-08-20 10:35:48 來源:億速云 閱讀:149 作者:小新 欄目:移動開發

小編給大家分享一下ViewPager如何實現輪播圖Banner/引導頁Guide,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Banner效果:

ViewPager如何實現輪播圖Banner/引導頁Guide

Github鏈接地址:https://github.com/Allure0/LMBanners

昨天,有使用此庫的同學提出需求,想在引導頁的時候用這個庫并且最后一頁有進入按鈕如何實現,為滿足他的需求,也方便更多開發者是快速實現。進行了簡單的擴展支持Guide模式的使用。

Guide效果圖:

ViewPager如何實現輪播圖Banner/引導頁Guide

OK,效果如圖所以,咱們此庫滿足了既可在Banner上使用也可以快速在第一次安裝應用的時候引導頁使用。

Banner與Guide有什么區別?

引導頁的最后一頁有按鈕,Banners沒有

引導頁的底部原點距離較大,Banners可以幾乎固定

Banner基礎上擴展實現第一步:添加按鈕

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:id="@+id/layout"
  android:layout_width="match_parent"

  android:layout_height="match_parent">

  <com.allure.lbanners.viewpager.HorizonVerticalViewPager
    android:id="@+id/gallery"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:unselectedAlpha="1"></com.allure.lbanners.viewpager.HorizonVerticalViewPager>

  <LinearLayout
    android:id="@+id/indicatorLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center"
    android:orientation="horizontal"
    android:padding="20dp"></LinearLayout>

  <Button
    android:id="@+id/btn_start"
    android:layout_width="104dp"
    android:layout_height="29dp"
    android:layout_above="@id/indicatorLayout"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="40dp"
    android:background="@drawable/banners_btn_shape"
    android:gravity="center"
    android:text="立即開啟"
    android:textColor="#f24814"
    android:textSize="12sp" />

</RelativeLayout>

相比于原來咱們新增了按鈕,這時候咱們按照這個布局運行在每一個界面都包含了Button,而引導頁模式只有在最后一頁需要展示按鈕。

Banner基礎上擴展實現第二步:按鈕的控制與模式支持

模式的支持

attrs.xml下新增自定義屬性

 <!--是否為引導頁-->
    <attr name="isGuide" format="boolean"></attr>
    <attr name="indicatorBottomPadding" format="integer"></attr>

按鈕的控制

在ViewPager中咱們控制按鈕可以在ViewPager.OnPageChangeListener的接口方法中onPageScrolled進行控制

 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    Log.d("LMBanners", "onPageScrolled was invoke()");
    int realPosition = position %= showCount;
    if(!isGuide){
      btnStart.setVisibility(View.GONE);
      return;
    }
    if (realPosition == getItemCount() - 2) {
      if (positionOffset > 0.5f) {
        if (btnStart != null) {
          ViewHelper.setAlpha(btnStart, positionOffset);
          btnStart.setVisibility(View.VISIBLE);
        }
      } else {
        btnStart.setVisibility(View.GONE);
      }
    } else if (realPosition == getItemCount() - 1) {
      if (positionOffset < 0.5f) {
        btnStart.setVisibility(View.VISIBLE);
        ViewHelper.setAlpha(btnStart, 1.0f - positionOffset);
      } else {
        btnStart.setVisibility(View.GONE);
      }
    } else {
      btnStart.setVisibility(View.GONE);
    }


  }

以上代碼中isGuide咱們判斷是哪一種模式,如果不是Guide引導頁模式,直接設置按鈕不顯示,并且跳出程序。
如果是Guide引導頁模式,咱們針對倒數第二頁與最后的控制的滑動距離來判斷了按鈕的顯示。

核心點:

positionOffset:表示滑動的距離
向左滑動1—->>0.5>>0
向右滑動0—->>0.5>>1
根據滑動的距離進行按鈕的一個漸變顯示。

Banner基礎上擴展實現第三步:按鈕的點擊回調

點擊按鈕需要執行開發者的自身邏輯跳轉,咱們用接口回調完成

 public interface onStartListener {
    void startOpen();
  }

Banner基礎上擴展實現第四步:Guide模式使用方式

對比banner只需要增加以下代碼,如果需要其他屬性可以自己設置(如,不自動滾動,不設置循環播放等等)

//設置為全屏
    mLBanners.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
    //true為Guide模式,false為banner模式
     mLBanners.isGuide(true);
     mLBanners.setOnStartListener(new LMBanners.onStartListener() {
      @Override
      public void startOpen() {
        //回調跳轉的邏輯
        Toast.makeText(MainActivity.this,"我要進入主界面",1).show();

      }
    });

以上是“ViewPager如何實現輪播圖Banner/引導頁Guide”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

房山区| 湘乡市| 繁峙县| 格尔木市| 沁阳市| 合阳县| 禹城市| 社旗县| 三穗县| 大渡口区| 甘洛县| 齐齐哈尔市| 梁平县| 柘荣县| 壶关县| 措勤县| 启东市| 潞城市| 竹溪县| 特克斯县| 阳山县| 东港市| 华宁县| 长治县| 始兴县| 原阳县| 芒康县| 寿宁县| 嘉祥县| 鹤山市| 松潘县| 元朗区| 康保县| 象山县| 芦溪县| 梅河口市| 冷水江市| 揭西县| 馆陶县| 武川县| 大同县|