Android中使用開源框架android-image-indicator實現圖片輪播部署

来源:http://www.cnblogs.com/panhouye/archive/2017/01/10/6270847.html
-Advertisement-
Play Games

之前的博文中有介紹關於圖片輪播的實現方式,分別為(含超鏈接): 1、《Android中使用ViewFlipper實現屏幕切換》 2、《Android中使用ViewPager實現屏幕頁面切換和頁面輪播效果》 3、《Android中使用ImageViewSwitcher實現圖片切換輪播導航效果》 今天通 ...


之前的博文中有介紹關於圖片輪播的實現方式,分別為(含超鏈接):

1、《Android中使用ViewFlipper實現屏幕切換

2、《Android中使用ViewPager實現屏幕頁面切換和頁面輪播效果

3、《Android中使用ImageViewSwitcher實現圖片切換輪播導航效果

今天通過使用GitHub中的開源項目android-image-indicator來簡單實現APP自帶圖片的輪播以及載入網路圖片進行輪播。

一、從GitHub上下載項目

GitHub地址:https://github.com/panxw/android-image-indicator

其中介紹了簡單的使用示例,大家可以看看

二、導入依賴包

(1)我嘗試使用AndroidStudio2,2通過Import Module來導入下載文件中的library來導入依賴包,但本次下載的項目使用Maven來構建,

導入過程出現錯誤提示:Error:(2, 0) Plugin with id‘com.github.dcendents.Android-maven’ not found。嘗試了多種解決方案,無法有效解決依賴包導入問題。建議使用第二種方法導入

(2)在build.gradle(Module.app)中dependencies下直接添加以下代碼

1 compile 'com.panxw.imageindicator:library:1.0.2'
添加示例如下: 添加完後,點擊界面上的提示,同步以下就好。

三、演示載入APP自帶圖片

(1)Layout佈局文件如下:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:id="@+id/activity_main"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context="com.mly.panhouye.demo.MainActivity">
 8     <com.panxw.android.imageindicator.ImageIndicatorView
 9         android:id="@+id/indicate_view"
10         android:layout_width="match_parent"
11         android:layout_height="match_parent">
12     </com.panxw.android.imageindicator.ImageIndicatorView>
13 </RelativeLayout>

(2)Java實現代碼如下:

 1 package com.mly.panhouye.demo;
 2 import android.os.Bundle;
 3 import android.support.v7.app.AppCompatActivity;
 4 import com.panxw.android.imageindicator.AutoPlayManager;
 5 import com.panxw.android.imageindicator.ImageIndicatorView;
 6 import java.util.ArrayList;
 7 import java.util.List;
 8 
 9 public class MainActivity extends AppCompatActivity {
10     ImageIndicatorView indicate_view;
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15         indicate_view = (ImageIndicatorView) findViewById(R.id.indicate_view);
16         local();
17     }
18     //系統本地圖片載入
19     public void local() {
20         // 聲明一個數組, 指定圖片的ID
21         final Integer[] resArray = new Integer[] {R.mipmap.a1, R.mipmap.a2,
22                     R.mipmap.a3, R.mipmap.a4};
23         // 把數組交給圖片展播組件
24         indicate_view.setupLayoutByDrawable(resArray);
25         // 展播的風格
26 //        indicate_view.setIndicateStyle(ImageIndicatorView.INDICATE_ARROW_ROUND_STYLE);
27         indicate_view.setIndicateStyle(ImageIndicatorView.INDICATE_USERGUIDE_STYLE);
28         // 顯示組件
29         indicate_view.show();
30         final AutoPlayManager autoBrocastManager = new AutoPlayManager(indicate_view);
31         //設置開啟自動廣播
32         autoBrocastManager.setBroadcastEnable(true);
33         //autoBrocastManager.setBroadCastTimes(5);//loop times
34         //設置開始時間和間隔時間
35         autoBrocastManager.setBroadcastTimeIntevel(3000, 3000);
36         //設置迴圈播放
37         autoBrocastManager.loop();
38     }
39 }

四、載入網路圖片

(1)首先在Java中自定義NetworkImageIndicatorView.class

其中在載入網路圖片到imageView中使用了網路通信框架-VolLey。這裡主要使用其中的ImageRequest,

ImageRequest的構造函數接收六個參數,分別代表的含義是:

第一個參數就是圖片的URL地址,這個沒什麼需要解釋的。

第二個參數是圖片請求成功的回調,這裡我們把返回的Bitmap參數設置到ImageView中。

第三第四個參數分別用於指定允許圖片最大的寬度和高度,如果指定的網路圖片的寬度或高度大於這裡的最大值,則會對圖片進行壓縮,指定成0的話就表示不管圖片有多大,都不會進行壓縮。

第五個參數用於指定圖片的顏色屬性,Bitmap.Config下的幾個常量都可以在這裡使用,其中ARGB_8888可以展示最好的顏色屬性,每個圖片像素占據4個位元組的大小,而RGB_565則表示每個圖片像素占據2個位元組大小。

第六個參數是圖片請求失敗的回調,這裡我們當請求失敗時在ImageView中顯示一張預設圖片。

 1 package com.mly.panhouye.demo;
 2 import android.content.Context;
 3 import android.graphics.Bitmap;
 4 import android.util.AttributeSet;
 5 import android.widget.ImageView;
 6 import com.android.volley.RequestQueue;
 7 import com.android.volley.Response;
 8 import com.android.volley.VolleyError;
 9 import com.android.volley.toolbox.ImageRequest;
10 import com.android.volley.toolbox.Volley;
11 import com.panxw.android.imageindicator.ImageIndicatorView;
12 import java.util.List;
13 /**
14  * Created by panchengjia on 2017/1/10 0010.
15  */
16 public class NetworkImageIndicatorView extends ImageIndicatorView {
17     public NetworkImageIndicatorView(Context context, AttributeSet attrs) {
18         super(context, attrs);
19     }
20     public NetworkImageIndicatorView(Context context) {
21         super(context);
22     }
23     public void setupLayoutByImageUrl(List<String> urlList) {
24         for(String url: urlList) {
25             final ImageView imageView = new ImageView(getContext());
26             //load image from url and set to imageView, you can use UIL or Volley to do this work
27             //本次我們使用Volley
28             //創建一個請求對列
29             RequestQueue queue = Volley.newRequestQueue(getContext());
30             ImageRequest request = new ImageRequest(url, new Response.Listener<Bitmap>() {
31                 @Override
32                 public void onResponse(Bitmap bitmap) {
33                     imageView.setImageBitmap(bitmap);
34                 }
35             }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
36                 @Override
37                 public void onErrorResponse(VolleyError volleyError) {
38                     System.out.println(volleyError);
39                 }
40             });
41             queue.add(request);
42             addViewItem(imageView);
43         }
44     }
45 }

(2)Layout佈局展示文件如下:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:id="@+id/activity_main"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     android:orientation="vertical"
 8     tools:context="com.mly.panhouye.demo.MainActivity">
 9     
10     <com.mly.panhouye.demo.NetworkImageIndicatorView
11         android:layout_width="match_parent"
12         android:layout_height="match_parent"
13         android:id="@+id/internet_iv">
14     </com.mly.panhouye.demo.NetworkImageIndicatorView>
15     
16 </LinearLayout>

(3)java實現代碼如下:

 1 package com.mly.panhouye.demo;
 2 import android.os.Bundle;
 3 import android.support.v7.app.AppCompatActivity;
 4 import com.panxw.android.imageindicator.AutoPlayManager;
 5 import com.panxw.android.imageindicator.ImageIndicatorView;
 6 import java.util.ArrayList;
 7 import java.util.List;
 8 public class MainActivity extends AppCompatActivity {
 9     NetworkImageIndicatorView internet_iv;
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14         internet_iv= (NetworkImageIndicatorView) findViewById(R.id.internet_iv);
15         internet();
16     }
17     public void internet(){
18         final List<String> urlList= new ArrayList<String>();
19         urlList.add("http://r.photo.store.qq.com/psb?/V12kkHqD1CWRD4/1*CDpMdmLbUg.gga4PxHTxZUSZqZ1ei76FIDnprasXI!/r/dKEAAAAAAAAA");
20         urlList.add("http://r.photo.store.qq.com/psb?/V12kkHqD1CWRD4/40Y896PFEJ0ZdQyzrd0Nar48yCs5g9lkH3jI7zSRCQQ!/r/dKEAAAAAAAAA");
21         urlList.add("http://r.photo.store.qq.com/psb?/V12kkHqD1CWRD4/7oqQQKh5D5OKezdyC0geEGaTQjJirH8.GbQ9mY13aIY!/r/dKAAAAAAAAAA");
22         internet_iv.setupLayoutByImageUrl(urlList);
23         internet_iv.show();
24         //設置自動播放
25         AutoPlayManager autoBrocastManager =  new AutoPlayManager(internet_iv);
26         autoBrocastManager.setBroadcastEnable(true);
27         autoBrocastManager.setBroadCastTimes(5);//迴圈次數設置
28         autoBrocastManager.setBroadcastTimeIntevel(500, 500);
29         autoBrocastManager.loop();
30     }
31 }

使用開源框架實現起來還是很方便的,本次演示只為實現功能,大家有時間可以優化下界面,實現自己想要的結果(網路載入中引用了本人的玉照哦,謝謝大家觀賞)

 


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

-Advertisement-
Play Games
更多相關文章
  • 在"模擬Vue之數據驅動2"中,我們實現了個Observer構造函數,通過它可以達到監聽已有數據data中的所有屬性。 但,倘若我們想在某個對象中,新增某個屬性呢? 如下: 那麼豈不是,新增的infor屬性,以及它的對象屬性,沒有得到監聽。 此時,應該怎麼處理呢? 通過走讀Vue源碼,發現他是採用另 ...
  • 前面的話   CSS倒影目前只有chrome和safari瀏覽器支持,且需要添加 webkit 首碼。本文將詳細介紹CSS倒影box reflect   語法 webkit box reflect 初始值: none 應用於: 塊級元素(包括inline block) ...
  • [1]語法 [2]灰度 [3]飽和度 [4]褐色 [5]色相 [6]反色 [7]透明度 [8]亮度 [9]對比度 [10]模糊 [11]陰影 ...
  • 新人,小白一枚,剛剛參加工作,所以會在這裡記錄一些遇到的問題。 最近要做的東西,是對一個表格動態的添加行,刪除行,並且對錶格中內容進行非空驗證。 ...
  • 本文對Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法進行了詳細的總結,需要的朋友可以參考下,希望對大家有所幫助。 詳細解讀Jquery各Ajax函數: $.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url, ...
  • http://www.cssauthor.com/best-responsive-admin-templates/#Free ...
  • JavaScript課程 兩日大綱 ● JavaScript基本語法 ● JavaScript函數 ● JavaScript基於對象編程 ● JavaScript BOM對象編程 ● JavaScript DOM對象編程 ● JavaScript JSON格式簡介 *****************... ...
  • 一、官方文檔的說明 in the face of "evil features" such as eval or with, the YUI Compressor takes a defensive approach by not obfuscating any of the scopes cont ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...