FlaycoBanner開源圖片輪播框架使用丈积,支持android2.2及以上

git地址:https://github.com/H07000223/FlycoBanner_Master
導入FlaycoBanner框架依賴:

    compile 'com.flyco.banner:FlycoBanner_Lib:2.0.2@aar'//banner
    compile 'com.nineoldandroids:library:2.4.0'//banner

導入Glide框架依賴:

compile 'com.github.bumptech.glide:glide:3.7.0'

自定義類SimpleImageBanner繼承BaseIndicatorBanner<BannerItem, SimpleImageBanner>:

public class SimpleImageBanner extends BaseIndicatorBanner<BannerItem, SimpleImageBanner> {
    private ColorDrawable colorDrawable;

    public SimpleImageBanner(Context context) {

        this(context,null,0);
    }

    public SimpleImageBanner(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public SimpleImageBanner(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        colorDrawable = new ColorDrawable(Color.parseColor("#555555"));
    }

    @Override
    public void onTitleSlect(TextView tv, int position) {
        BannerItem bannerItem=mDatas.get(position);
        tv.setText(bannerItem.title);
    }

    @Override
    public View onCreateItemView(int position) {
        View inflate = View.inflate(mContext, R.layout.layout_banner, null);
        ImageView imageView = ViewFindUtils.find(inflate, R.id.iv);
        Log.i("bannerItem.title", "bannerItem.title: "+imageView);
        BannerItem bannerItem=mDatas.get(position);
        int itemWidth=mDisplayMetrics.widthPixels;
        int itemHight=(int) (itemWidth * 360 * 1.0f / 640);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new LinearLayout.LayoutParams(itemWidth,itemHight));
        String imgUrl=bannerItem.imgUrl;
        if (!TextUtils.isEmpty(imgUrl)){         Glide.with(mContext).load(imgUrl).override(itemWidth,itemHight).centerCrop().placeholder(R.mipmap.ic_launcher).into(imageView);
        }else {
            imageView.setImageDrawable(colorDrawable);
        }

        return inflate;
    }
}

資源類DataProvider:

public class DataProvider {
    public static String[] titles = new String[]{
            "歡樂頌:五美破案總動員",
            "無心法師:生死離別!月牙遭虐殺",
            "花千骨:尊上淪為花千骨",
            "綜藝飯:胖軒偷看夏天洗澡掀波瀾",
            "碟中諜4:阿湯哥高塔命懸一線,超越不可能",
    };
    public static String[] urls = new String[]{//640*360 360/640=0.5625
            "http://r2.ykimg.com/050C0000571EB4F867BC3D14E908D907",//"歡樂頌:五美破案總動員"
            "http://photocdn.sohu.com/tvmobilemvms/20150907/144158380433341332.jpg",//無心法師:生死離別!月牙遭虐殺
            "http://photocdn.sohu.com/tvmobilemvms/20150907/144160286644953923.jpg",//花千骨:尊上淪為花千骨
            "http://photocdn.sohu.com/tvmobilemvms/20150902/144115156939164801.jpg",//綜藝飯:胖軒偷看夏天洗澡掀波瀾
            "http://photocdn.sohu.com/tvmobilemvms/20150907/144159406950245847.jpg",//碟中諜4:阿湯哥高塔命懸一線,超越不可能
    };
    public static ArrayList<BannerItem> getList() {
        ArrayList<BannerItem> list = new ArrayList<>();
        for (int i = 0; i < urls.length; i++) {
            BannerItem item = new BannerItem();
            item.imgUrl = urls[i];
            item.title = titles[i];
            list.add(item);
        }
        return list;
    }
}

findViewById幫助類ViewFindUtils:

public class ViewFindUtils
{
    /**
     * ViewHolder簡潔寫法,避免適配器中重復定義ViewHolder,減少代碼量 用法:
     * 
     * <pre>
     * if (convertView == null)
     * {
     *  convertView = View.inflate(context, R.layout.ad_demo, null);
     * }
     * TextView tv_demo = ViewHolderUtils.get(convertView, R.id.tv_demo);
     * ImageView iv_demo = ViewHolderUtils.get(convertView, R.id.iv_demo);
     * </pre>
     */
    public static <T extends View> T hold(View view, int id)
    {
        SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();

        if (viewHolder == null)
        {
            viewHolder = new SparseArray<>();
            view.setTag(viewHolder);
        }

        View childView = viewHolder.get(id);

        if (childView == null)
        {
            childView = view.findViewById(id);
            viewHolder.put(id, childView);
        }

        return (T) childView;
    }

    /**
     * 替代findviewById方法
     */
    public static <T extends View> T find(View view, int id)
    {
        return (T) view.findViewById(id);
    }
}

實體BannerItem:

public class BannerItem {
    public String imgUrl;
    public String title;
}

MainActivity:

public class MainActivity extends AppCompatActivity {
private ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        SimpleImageBanner simpleImageBanner= (SimpleImageBanner) findViewById(R.id.ban);
        simpleImageBanner.setSource(DataProvider.getList()).startScroll();
        simpleImageBanner.setOnItemClickL(new BaseBanner.OnItemClickL() {
            @Override
            public void onItemClick(int position) {
                Toast.makeText(MainActivity.this,"position->"+position,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

主布局文件main_layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
   <include layout="@layout/layout_simpbanner"/>
</LinearLayout>

輪播圖中的imageview:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<ImageView
    android:id="@+id/iv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"/>
</LinearLayout>

輪播SimpleImageBanner:

<com.cutv.myflaycobanner.SimpleImageBanner xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:banner="http://schemas.android.com/apk/res-auto"
    android:id="@+id/ban"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    banner:bb_barColor="#88000000"
    banner:bb_barPaddingBottom="5dp"
    banner:bb_barPaddingLeft="10dp"
    banner:bb_barPaddingRight="10dp"
    banner:bb_barPaddingTop="5dp"
    banner:bb_delay="5"
    banner:bb_indicatorCornerRadius="3dp"         //指示器圓點半徑
    banner:bb_indicatorGap="8dp"                        //兩個指標之間的差距筐骇,dp,默認的6dp
    banner:bb_indicatorGravity="RIGHT"              //指示器位置
    banner:bb_indicatorHeight="5dp"
    banner:bb_indicatorSelectColor="#07a7e1"
    banner:bb_indicatorStyle="CORNER_RECTANGLE"         //指示器樣式:矩形
    banner:bb_indicatorUnselectColor="#88ffffff"
    banner:bb_indicatorWidth="5dp"
    banner:bb_isAutoScrollEnable="true"
    banner:bb_isBarShowWhenLast="true"                            //當位置是最后的時候江滨,設置底部的欄顯示
    banner:bb_isIndicatorShow="true"
    banner:bb_isLoopEnable="true"                                   //是否為LoopViewPager铛纬,默認為true
    banner:bb_isTitleShow="true"                                       //設置標題顯示或不顯示,默認為true
    banner:bb_period="5"                                                    //滾動周期唬滑,單位秒告唆,默認5秒
    banner:bb_scale="0.5"                                                  //橫幅高度和寬度,高度/屏幕寬度
    banner:bb_textColor="#ffffff"
    banner:bb_textSize="13.5sp" />
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晶密,一起剝皮案震驚了整個濱河市擒悬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稻艰,老刑警劉巖懂牧,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尊勿,居然都是意外死亡僧凤,警方通過查閱死者的電腦和手機畜侦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拼弃,“玉大人夏伊,你說我怎么就攤上這事∥茄酰” “怎么了溺忧?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盯孙。 經(jīng)常有香客問我鲁森,道長,這世上最難降的妖魔是什么振惰? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任歌溉,我火速辦了婚禮,結果婚禮上骑晶,老公的妹妹穿的比我還像新娘痛垛。我一直安慰自己,他們只是感情好桶蛔,可當我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布匙头。 她就那樣靜靜地躺著,像睡著了一般仔雷。 火紅的嫁衣襯著肌膚如雪蹂析。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天碟婆,我揣著相機與錄音电抚,去河邊找鬼。 笑死竖共,一個胖子當著我的面吹牛蝙叛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肘迎,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼甥温,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妓布?” 一聲冷哼從身側響起姻蚓,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匣沼,沒想到半個月后狰挡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年加叁,在試婚紗的時候發(fā)現(xiàn)自己被綠了倦沧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡它匕,死狀恐怖展融,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情豫柬,我是刑警寧澤告希,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站烧给,受9級特大地震影響燕偶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜础嫡,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一指么、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榴鼎,春花似錦伯诬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翁涤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萌踱,已是汗流浹背葵礼。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留并鸵,地道東北人鸳粉。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像园担,于是被迫代替她去往敵國和親届谈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,768評論 25 707
  • 一弯汰、簡介 在泰國舉行的谷歌開發(fā)者論壇上艰山,谷歌為我們介紹了一個名叫Glide的圖片加載庫,作者是bumptech咏闪。這...
    天天大保建閱讀 7,459評論 2 28
  • 思維不對曙搬,改一下思維,生活就會變了,學習優(yōu)秀的人 李姐纵装,比媽媽小一歲征讲,從泰國回來開始化妝,一個月橡娄,自己畫眼線诗箍,自拍...
    張嚴閱讀 93評論 0 0
  • 我首次見杜明娜時,她是頗有些狼狽的挽唉。 總聽石哥兒說峪村的冬季不甚冷滤祖,有春天的感覺。卻不知峪村的夏季竟是如此的難熬且...
    南望衡岳閱讀 962評論 10 25