BannerVIew的用法及源碼解析

關於(About)

申明:

該BannerView控件是在借鑑了兩位大神的代碼加工形成的:[IT_xiao小巫]大神和stevenhu_223大神。非常感謝。

BannerView的效果圖如下:





主要暴露接口和設置:

  1. BannerStyle樣式類:用來設置banner的樣式,包括指示器的形式(包括點,數字,圖像(待開發)),位置(上下左右),是否顯示信息,輪播時間;
  2. BannerInfo實體類:用來設置banner的所有信息,包括圖片,文字信息,目標url
  3. 提供setBannerData(List items,OnImageClickListener listener)方法,設置banner信息及banner點擊事件
  4. 在持續更新。

使用

導入包:

詳見我的另外一篇博文:http://blog.csdn.net/u011072613/article/details/53889596

在佈局文件中添加

<fragment 
    android:id="@+id/banner_frg"
    android:name="com.example.yf_library.banner.BannerView"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    />

代碼設置:

1.設置樣式信息:

    bannerStyle= mBannerView.getBannerStyle();

通過BannerView獲取BannerStyle對象,當然需要記住的是樣式設置的代碼必須在數據設置的前面,這樣才能讓設置生效,不然程序會調用默認的設置。
主要樣式如下:

//水平
public enum HorizontalAlignment {
    LEFT, CENTER, RIGHT
}

//垂直
public enum VerticalAlignment {
    TOP, CENTER, BOTTOM
}

//指示器的形式
public enum IndicatorStyle{
    NUM, INDIC, IMG
}

private int time=2;//默認時間
private HorizontalAlignment mHorizontalAlignment = HorizontalAlignment.LEFT;//默認靠左
private VerticalAlignment mVerticalAlignment = VerticalAlignment.BOTTOM;//默認靠底部
private IndicatorStyle mIndicatorStyle = IndicatorStyle.INDIC;//默認是指示器模式
private boolean showInfo=false;//默認不顯示信息

private int textBg=R.drawable.banner_txt_rec;//默認的數字背景
private int textApperance;//數字樣式
private int dotsNormal=R.drawable.dot_normal;//常規的點
private int dotsSelected=R.drawable.dot_focused;//被選中的點
private int defImg=R.drawable.def_banner;//默認加載的圖片

每一個元素均有相應的set方法,具體可查看源碼。

2.BannerInfo信息設置

    BannerInfo adDomain = new BannerInfo();
    adDomain.setId("108078");
    adDomain.setDate("3月4日");
    adDomain.setTitle("這是廣告的標題");
    adDomain.setTopicFrom("阿宅");
    adDomain.setTopic("“廣告的內容廣告的內容廣告的內容”");
    adDomain.setImgUrl(imageLocalUrls[0]);

樣式的元素主要包括:

private String id; // 
private String date; // 日期
private String title; // 標題
private String topicFrom; //
private String topic; // 
private String imgUrl; // 圖片的url
private boolean isAd; // 
private String targetUrl; // 目標url
private int width; // 寬度
private int height; // 高度
private boolean available; //是否可用
private Intent mIntent; //activity跳轉`

在此要再次感謝IT_xiao小巫大神和stevenhu_223大神,感謝,膜拜。。

3.數據設置:

  mBannerView.setBannerData(data, new OnImageClickListener() {
        @Override
        public void onImageClick(BannerInfo info, int postion, View imageView) {
            // TODO Auto-generated method stub
            //注意此處的postion是從1開始
            Toast.makeText(getApplicationContext(), "點擊了"+postion, 1).show();
            startActivity(info.getmIntent());

        }
    });

大概的方法就這麼多,最開始的思路是定義一個實體類包含banner信息,然後使用adapter適配數據,寫的很煩躁。也沒有文中提到的兩位大神的詳細,後來覺得他們寫的很好,也就直接借鑑了。

還有一些需要擴展的地方。。。。(比如將點和數字,改成相應的圖片,添加動圖等),敬請期待。

郵箱:[email protected]

github:https://github.com/commutescript

歡迎交流,歡迎star。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章