Android 輪播圖Banner切換圖片的效果

来源:https://www.cnblogs.com/huangzedong/archive/2018/11/15/9961371.html
-Advertisement-
Play Games

Android XBanner使用詳解 2018年03月14日 08:19:59 AND_Devil 閱讀數:910 Android XBanner使用詳解 2018年03月14日 08:19:59 AND_Devil 閱讀數:910 Android XBanner使用詳解 Android XBan ...


Android XBanner使用詳解

2018年03月14日 08:19:59  閱讀數:910   版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://www.cnblogs.com/huangzedong/p/9961371.html

前言:現如今的很多APP都介入了廣告,不過,大多數都是以輪播圖的形式展現的,我之前使用的是viewpage和自定義控制項實現的這些功能,不過,相比於banner來說,效果還顯示很遜色的,畢竟,現在的手機,性能都過剩,這些消耗,也不會太影響APP的性能!

之前接入的是Banner,現在突然間很想使用banner的升級版,我借鑒了XBanner的github介紹

一、XBanner簡介

支持圖片無限輪播的控制項,可進行自定義功能。

  1. 支持根據服務端返回的數據動態設置廣告條的總頁數
  2. 支持大於等於1頁時的無限迴圈自動輪播、手指按下暫停輪播、抬起手指開始輪播
  3. 支持自定義狀態指示點位置 左 、中 、右
  4. 支持自定義狀態指示點
  5. 支持監聽 item 點擊事件
  6. 支持設置圖片輪播間隔
  7. 支持指示器背景的修改及隱藏/顯示
  8. 支持顯示提示性文字功能
  9. 支持圖片切換動畫,目前支持10種切換動畫,具體可看demo
  10. 支持設置圖片切換速度
  11. 支持設置數字指示器
  12. 支持Glide/Fresco等主流圖片載入框架載入圖片 
    效果圖 
    這裡寫圖片描述

基本使用

1.添加Gradle依賴

dependencies {
    compile 'com.xhb:xbanner:1.3.1'
}

2.在清單文件中添加網路許可權

<uses-permission android:name="android.permission.INTERNET" />

3 由於XBanner中有可能從網路載入圖片,因此也需要導入一些圖片載入框架的依賴,如Glide

       `compile 'com.github.bumptech.glide:glide:3.7.0'
        compile 'jp.wasabeef:glide-transformations:1.0.6'`

4 在佈局文件中添加XBanner

<com.stx.xhb.xbanner.XBanner
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/banner_1"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        app:AutoPlayTime="3000"
        app:pointsContainerBackground="#44aaaaaa"
        app:pointNormal="@drawable/shape_noraml"
        app:pointSelect="@drawable/shape_selected"
        app:pointsPosition="RIGHT"
        app:tipTextSize="12sp"
        app:isShowNumberIndicator="true"
        app:isShowIndicatorOnlyOne="true"
        app:pageChangeDuration="800"/>

5 XBanner屬性


屬性名          屬性說明               屬性值
isAutoPlay      是否支持自動輪播     boolean類型,預設為true
autoPlayTime    圖片輪播事件間隔            int類型,預設5000ms
pointNormal     指示器未選中時的狀態    drawable類型,不指定的話使用預設狀態點
pointSelect     指示器選中時的狀態     drawable類型,不指定的話使用預設狀態點
pointsVisible   是否顯示指示器        boolean類型,預設為true
pointsPosition  指示點位置       CENTER、LEFT、RIGHT,預設CENTER
pointsContainerBackground       指示器條背景  color類型、drawable類型、mipmap類型等
pointContainerPosition  指示器條位置      TOP、BOTTOM,預設BOTTOM
pointContainerLeftRightPadding  指示點容器左右內間距     dimension類型,預設10.0dip
pointTopBottomPadding   指示點上下內間距        dimension類型,預設6.0dip
pointLeftRightPadding   指示點左右內間距        dimension類型,預設3.0dip
tipTextColor    提示文字的顏色         reference類型
tipTextSize     提示文字的大小         dimension類型,預設10.0dp

6.在Activity或者Fragment中配置

banner = (XBanner) findViewById(R.id.banner);

 List<String> imgesUrl = new ArrayList<>();
        imgesUrl.add("http://img3.fengniao.com/forum/attachpics/913/114/36502745.jpg");
        imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/99381473502384338.jpg");
        imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/77991473496077677.jpg");
        imgesUrl.add("http://imageprocess.yitos.net/images/public/20160906/1291473163104906.jpg");
        // 為XBanner綁定數據
        banner .setData(imgesUrl,null);//第二個參數為提示文字資源集合
         // XBanner適配數據
        banner.setmAdapter(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, View view, int position) {
                Glide.with(MainActivity.this).load(imgesUrl.get(position)).into((ImageView) view);
            }
        });
        // 設置XBanner的頁面切換特效,選擇一個即可,總的大概就這麼多效果啦,歡迎使用
        banner.setPageTransformer(Transformer.Default);//橫向移動

        banner.setPageTransformer(Transformer.Alpha); //漸變,效果不明顯

        banner.setPageTransformer(Transformer.Rotate);  //單頁旋轉

        banner.setPageTransformer(Transformer.Cube);    //立體旋轉

        banner.setPageTransformer(Transformer.Flip);  // 反轉效果

        banner.setPageTransformer(Transformer.Accordion); //三角換頁

        banner.setPageTransformer(Transformer.ZoomFade); // 縮小本頁,同時放大另一頁

        banner.setPageTransformer(Transformer.ZoomCenter); //本頁縮小一點,另一頁就放大

        banner.setPageTransformer(Transformer.ZoomStack); // 本頁和下頁同事縮小和放大

        banner.setPageTransformer(Transformer.Stack);  //本頁和下頁同時左移

        banner.setPageTransformer(Transformer.Depth);  //本頁左移,下頁從後面出來

        banner.setPageTransformer(Transformer.Zoom);  //本頁剛左移,下頁就在後面
        // 設置XBanner頁面切換的時間,即動畫時長
        banner.setPageChangeDuration(1000);

7 監聽廣告 item 的單擊事件

banner.setOnItemClickListener(new XBanner.OnItemClickListener() {
            @Override
            public void onItemClick(XBanner banner, int position) {
                Toast.makeText(MainActivity.this, "點擊了第"+position+"圖片", Toast.LENGTH_SHORT).show();
            }
        });

8 為了更好的體驗,建議j在添加以下代碼

/** 為了更好的體驗效果建議在下麵兩個生命周期中調用下麵的方法 **/
    @Override
    protected void onResume() {
        super.onResume();
        banner.startAutoPlay();
    }

    @Override
    protected void onStop() {
        super.onStop();
        banner.stopAutoPlay();
    }

9 混淆配置

##XBanner 圖片輪播混淆配置
-keep class com.stx.xhb.xbanner.**{*;}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一. 字元串對象編碼 Redis中字元串可以存儲3種類型,分別是位元組串(byte string)、整數、浮點數。在上章節中講到字元串對象的編碼可以是int, raw,embstr。 如果一個字元串對象保存的是整數值,那麼對象RedisObject結構的ptr 屬性裡面將void*轉換成long,字元 ...
  • 最近在調研關聯數據的一些東西,需要用到rdf資料庫,所以接觸了virtuoso資料庫。安裝的坑其實並不多,之前在windows 10上安過一次。這次在ubuntu 18.04上安裝一下,其他的linux發行版安裝的流程也差不多。 virtuoso資料庫的下載與使用 開源版本的virtuoso資料庫可 ...
  • 原創鏈接:https://www.cnblogs.com/junfly/articles/2798023.html SQL SERVER 基礎教程中關於伺服器登錄名、伺服器角色、資料庫用戶、資料庫角色、架構的關係。 我們要說的包括伺服器登錄名Server Login,伺服器角色Server Role ...
  • 摘要: 下文講述updatetext的功能及舉例說明 實驗環境:sql server 2008 R2 updatetext關鍵字功能及語法說明 updatetext功能說明: updatetext的功能為:更新當前的text,ntext,image欄位, 當我們可以使用updatetext更新列中的 ...
  • MySQL 屬於 關係型資料庫管理系統 (RDBMS),使用RDBMS時,最常見的系統結構就是 客戶端/伺服器類型 (C/S類型)這種結構。 指的是用來接收其他程式發出的請求,並對該請求進行相應處理的程式(軟體),或者是安裝了此類程式的設備(電腦)。在電腦上持續執行處理,並等待接收下一條請求。 ...
  • 現階段大數據如火如荼,很多人想要學習大數據,但是卻不瞭解大數據,也不知道該從哪開始學起的同學,希望這篇文章能夠幫到你們。 1. Linux基礎和JavaSE基礎【包含mysql】 這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各種框架的時候都會用到, ...
  • 假設當前是第PageNo頁,每頁有PageSize條記錄,現在分別用Mysql、Oracle和SQL Server分頁查詢student表。 1、Mysql的分頁查詢: 理解:(Limit n,m) =>從第n行開始取m條記錄,n從0開始算。 2、Oracel的分頁查詢: 理解:假設pageNo = ...
  • ListView與RecyclerView在在app應用非常廣泛,相對於其他的view(button textview)來說比較複雜,接下來我將講一下創建的流程以及兩者的不同。 代碼來自《第一行代碼》 秋天到了,果園大豐收了,現在著急的事情,就是把水果收集好放進倉庫里。 ListView 1. 首先 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...