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

首頁 > 系統 > Android > 正文

Android ViewPager實現Banner循環播放

2019-12-12 05:18:40
字體:
來源:轉載
供稿:網友

問題的起源
在項目里,有時候需要實現一個圖片輪播的效果,用來展示Banner。同時,圖片能循環播放,下面還有一排小圓點來指示當前輪播到哪一頁了。

如下圖:


分析
? 圖片的個數是會變化的,同時小圓點的個數也會跟著圖片個數變化
? 每一個page的布局是一樣的。變化的就是小圓點的個數,所以需要用代碼來動態生成小圓點

編碼
布局
首先完成 MainActivity 的布局 activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- ViewPager --> <android.support.v4.view.ViewPager  android:id="@+id/viewpager"  android:layout_width="fill_parent"  android:layout_height="180dip" /> <LinearLayout  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:layout_alignBottom="@id/viewpager"  android:background="#44000000"  android:gravity="center"  android:orientation="vertical"  android:padding="5dip" >  <!-- Banner的文字描述 -->  <TextView   android:id="@+id/tv_banner_text_desc"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:textColor="@android:color/white" />  <!-- 小圓點的父控件 -->  <LinearLayout   android:id="@+id/ll_dot_group"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:layout_gravity="center_horizontal"   android:layout_marginTop="5dip"   android:gravity="center_horizontal"   android:orientation="horizontal" >  </LinearLayout> </LinearLayout></RelativeLayout>

因為小圓點共有兩種狀態,一個是 enable 為 true 的狀態,和 enable 為 false 的狀態。所以需要為小圓點編寫一個 selector 的 xml 配置文件,放在 drawable 文件夾中。這里,為它命名為 dot_bg_selector.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/point_bg_enable" android:state_enabled="true"></item> <item android:drawable="@drawable/point_bg_normal" android:state_enabled="false"></item></selector>

還需要再寫兩個 xml 文件,作為小圓點在不同狀態下的樣式
point_bg_enable.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <corners android:radius="0.5dip" /> <solid android:color="#aaFFFFFF" /></shape>

point_bg_normal.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <corners android:radius="0.5dip" /> <solid android:color="#55000000" /></shape>

準備圖片資源
我在 res/drawable-hdpi 文件夾中放置了幾張圖片,以演示用


開始編碼
代碼都加上詳細注釋了,大家可以看看。有不明白的歡迎指出來

package com.owen.adbanner;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.os.SystemClock;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;/** * ViewPager實現Banner循環滾動 *  * @author owen */public class MainActivity extends Activity { /** ViewPager中ImageView的容器 */ private List<ImageView> imageViewContainer = null; /** 上一個被選中的小圓點的索引,默認值為0 */ private int preDotPosition = 0; /** Banner文字描述數組 */ private String[] bannerTextDescArray = {    "鞏俐不低俗,我就不能低俗",    "樸樹又回來了,再唱經典老歌引萬人大合唱",   "揭秘北京電影如何升級",    "樂視網TV版大派送", "熱血

主站蜘蛛池模板:
烟台市|
定边县|
邓州市|
保山市|
芦山县|
黄冈市|
扎鲁特旗|
茂名市|
军事|
桦甸市|
竹溪县|
西藏|
广平县|
肃宁县|
健康|
长汀县|
九台市|
通山县|
光山县|
阿拉善盟|
五原县|
亳州市|
兴安县|
克什克腾旗|
泸溪县|
嘉义市|
香河县|
长武县|
西和县|
格尔木市|
姜堰市|
西城区|
乌拉特前旗|
通山县|
东港市|
景德镇市|
察雅县|
文安县|
东辽县|
镇沅|
策勒县|