日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android----banner使用详解

發(fā)布時(shí)間:2024/3/13 Android 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android----banner使用详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Android----banner使用詳解

昨天10.31 ,斗破蒼穹的三年之約終于出來(lái)了,自己也等了很久很久,敬師長(zhǎng),敬家人,敬朋友,敬每一個(gè)前行路上正在奮戰(zhàn)的自己,星光不問(wèn)趕路人,時(shí)間不負(fù)有心人。

效果圖:

  • 添加依賴

    implementation 'com.youth.banner:banner:2.1.0'
  • 添加權(quán)限到你的 AndroidManifest.xml

    <!-- if you want to load images from the internet --> <uses-permission android:name="android.permission.INTERNET" />
  • 布局文件

    <com.youth.banner.Bannerandroid:id="@+id/banner"android:layout_width="0dp"android:layout_height="250dp"android:layout_margin="10dp"app:banner_radius="20dp" // 圓角android:clickable="true" // 是否可點(diǎn)擊app:banner_indicator_selected_color="#95F2EC"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.157"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
  • 邏輯代碼

    package com.hnucm.xiaotang;import android.os.Bundle;import androidx.fragment.app.Fragment;import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; import com.youth.banner.Banner; import com.youth.banner.adapter.BannerImageAdapter; import com.youth.banner.holder.BannerImageHolder; import com.youth.banner.indicator.CircleIndicator; import com.youth.banner.listener.OnBannerListener;import org.json.JSONArray; import org.json.JSONException; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x;import java.util.ArrayList; import java.util.List;public class ShouYeFragment extends Fragment implements OnBannerListener {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View inflate = inflater.inflate(R.layout.fragment_shou_ye, container, false);Banner banner =inflate.findViewById(R.id.banner);List<String> imgList = new ArrayList<>();x.Ext.init(getActivity().getApplication());x.Ext.setDebug(BuildConfig.DEBUG); // 是否輸出debug日志, 開(kāi)啟debug會(huì)影響性能.x.view().inject(getActivity()); //沒(méi)有用到view注解可以先不用imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211026/image.6719h9mvs700.png");imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(11).2txrpbqztva0.jpg");imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(5).5s6zwxy19v40.jpg");imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(10).24p8puxcmqbk.jpg");imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(14).pizaxijh534.jpg");RequestParams params = new RequestParams("https://www.fastmock.site/mock/08392ee207964eb010bf22b157103494/androidJavaEE/banner");x.http().get(params, new Callback.CommonCallback<String>() {@Overridepublic void onSuccess(String result) {try {JSONArray jsonArray = new JSONArray(result);for (int i=0;i<jsonArray.length();i++){imgList.add((String)jsonArray.get(i));}banner.setDatas(imgList); // 動(dòng)態(tài)更新banner數(shù)據(jù)} catch (JSONException e) {e.printStackTrace();}}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {}@Overridepublic void onCancelled(CancelledException cex) {}@Overridepublic void onFinished() {}});banner.setAdapter(new BannerImageAdapter<String>(imgList) {@Overridepublic void onBindView(BannerImageHolder holder, String data, int position, int size) {System.out.println("hello TEST");Glide.with(holder.itemView).load(data).apply(RequestOptions.bitmapTransform(new RoundedCorners(30))).into(holder.imageView);}}).setIndicator(new CircleIndicator(getContext())).setLoopTime(1000).setOnBannerListener(this);// 設(shè)置圓形指示點(diǎn),設(shè)置循環(huán)時(shí)間,設(shè)置監(jiān)聽(tīng)器return inflate;}@Overridepublic void OnBannerClick(Object data, int position) { // 監(jiān)聽(tīng)每一個(gè)圖片的點(diǎn)擊事件Log.i("tag", "你點(diǎn)了第"+position+"張輪播圖");} }
  • 常見(jiàn)的一些屬性設(shè)置

    方法

    更多方法以實(shí)際使用為準(zhǔn),下面不一定全部列出了

    方法名返回類型描述
    getAdapter()extends BannerAdapter獲取你設(shè)置的BannerAdapter
    getViewPager2()ViewPager2獲取ViewPager2
    getIndicator()Indicator獲取你設(shè)置的指示器(沒(méi)有設(shè)置直接獲取會(huì)拋異常哦)
    getIndicatorConfig()IndicatorConfig獲取你設(shè)置的指示器配置信息(沒(méi)有設(shè)置直接獲取會(huì)拋異常哦)
    getRealCount()int返回banner真實(shí)總數(shù)
    setUserInputEnabled(boolean)this禁止手動(dòng)滑動(dòng)Banner;true 允許,false 禁止
    setDatas(List)this重新設(shè)置banner數(shù)據(jù)
    isAutoLoop(boolean)this是否允許自動(dòng)輪播
    setLoopTime(long)this設(shè)置輪播間隔時(shí)間(默認(rèn)3000毫秒)
    setScrollTime(long)this設(shè)置輪播滑動(dòng)的時(shí)間(默認(rèn)800毫秒)
    start()this開(kāi)始輪播(主要配合生命周期使用),或者你手動(dòng)暫停再次啟動(dòng)
    stop()this停止輪播(主要配合生命周期使用),或者你需要手動(dòng)暫停
    setAdapter(T extends BannerAdapter)this設(shè)置banner的適配器
    setAdapter(T extends BannerAdapter,boolean)this設(shè)置banner的適配器,是否支持無(wú)限循環(huán)
    setOrientation(@Orientation)this設(shè)置banner輪播方向(垂直or水平)
    setOnBannerListener(this)this設(shè)置點(diǎn)擊事件,下標(biāo)是從0開(kāi)始
    addOnPageChangeListener(this)this添加viewpager2的滑動(dòng)監(jiān)聽(tīng)
    setPageTransformer(PageTransformer)this設(shè)置viewpager的切換效果
    addPageTransformer(PageTransformer)this添加viewpager的切換效果(可以設(shè)置多個(gè))
    setIndicator(Indicator)this設(shè)置banner輪播指示器(提供有base和接口,可以自定義)
    setIndicator(Indicator,boolean)this設(shè)置指示器(傳false代表不將指示器添加到banner上,配合布局文件,可以自我發(fā)揮)
    setIndicatorSelectedColor(@ColorInt)this設(shè)置指示器選中顏色
    setIndicatorSelectedColorRes(@ColorRes)this設(shè)置指示器選中顏色
    setIndicatorNormalColor(@ColorInt)this設(shè)置指示器默認(rèn)顏色
    setIndicatorNormalColorRes(@ColorRes)this設(shè)置指示器默認(rèn)顏色
    setIndicatorGravity(@IndicatorConfig.Direction)this設(shè)置指示器位置(左,中,右)
    setIndicatorSpace(int)this設(shè)置指示器之間的間距
    setIndicatorMargins(IndicatorConfig.Margins)this設(shè)置指示器的Margins
    setIndicatorWidth(int,int)this設(shè)置指示器選中和未選中的寬度,直接影響繪制指示器的大小
    setIndicatorNormalWidth(int)this設(shè)置指示器未選中的寬度
    setIndicatorSelectedWidth(int)this設(shè)置指示器選中的寬度
    setIndicatorRadius(int)this設(shè)置指示器圓角,不要圓角可以設(shè)置為0
    setIndicatorHeight(int)this設(shè)置指示器高度
    setBannerRound(float)this設(shè)置banner圓角(還有一種setBannerRound2方法,需要5.0以上)
    setBannerGalleryEffect(int,int,float)this畫(huà)廊效果
    setBannerGalleryMZ(int,float)this魅族效果
    setStartPosition(int)this設(shè)置開(kāi)始的位置 (需要在setAdapter或者setDatas之前調(diào)用才有效哦)
    setIndicatorPageChange()this設(shè)置指示器改變監(jiān)聽(tīng) (一般是為了配合數(shù)據(jù)操作使用,看情況自己發(fā)揮)
    setCurrentItem()this設(shè)置當(dāng)前位置,和原生使用效果一樣
    addBannerLifecycleObserver()this給banner添加生命周期觀察者,內(nèi)部自動(dòng)管理banner的生命周期

    Attributes屬性

    在banner布局文件中調(diào)用,如果你自定義了indicator請(qǐng)做好兼容處理。 下面的屬性并不是每個(gè)指示器都用得到,所以使用時(shí)要注意!

    Attributesformatdescribe
    banner_loop_timeinteger輪播間隔時(shí)間,默認(rèn)3000
    banner_auto_loopboolean是否自動(dòng)輪播,默認(rèn)true
    banner_infinite_loopboolean是否支持無(wú)限循環(huán)(即首尾直接過(guò)渡),默認(rèn)true
    banner_orientationenum輪播方向:horizontal(默認(rèn)) or vertical
    banner_radiusdimensionbanner圓角半徑,默認(rèn)0(不繪制圓角)
    banner_indicator_normal_widthdimension指示器默認(rèn)的寬度,默認(rèn)5dp (對(duì)RoundLinesIndicator無(wú)效)
    banner_indicator_selected_widthdimension指示器選中的寬度,默認(rèn)7dp
    banner_indicator_normal_colorcolor指示器默認(rèn)顏色,默認(rèn)0x88ffffff
    banner_indicator_selected_colorcolor指示器選中顏色,默認(rèn)0x88000000
    banner_indicator_spacedimension指示器之間的間距,默認(rèn)5dp (對(duì)RoundLinesIndicator無(wú)效)
    banner_indicator_gravitydimension指示器位置,默認(rèn)center
    banner_indicator_margindimension指示器的margin,默認(rèn)5dp,不能和下面的同時(shí)使用
    banner_indicator_marginLeftdimension指示器左邊的margin
    banner_indicator_marginTopdimension指示器上邊的margin
    banner_indicator_marginRightdimension指示器右邊的margin
    banner_indicator_marginBottomdimension指示器下邊的margin
    banner_indicator_heightdimension指示器高度(對(duì)CircleIndicator無(wú)效)
    banner_indicator_radiusdimension指示器圓角(對(duì)CircleIndicator無(wú)效)
    banner_round_top_leftboolean設(shè)置要繪制的banner圓角方向(如果都不設(shè)置默認(rèn)全部)
    banner_round_top_rightboolean設(shè)置要繪制的banner圓角方向(如果都不設(shè)置默認(rèn)全部)
    banner_round_bottom_leftboolean設(shè)置要繪制的banner圓角方向(如果都不設(shè)置默認(rèn)全部)
    banner_round_bottom_rightboolean設(shè)置要繪制的banner圓角方向(如果都不設(shè)置默認(rèn)全部)
  • github官網(wǎng): GitHub - youth5201314/banner: 🔥🔥🔥Banner 2.0 來(lái)了!Android廣告圖片輪播控件,內(nèi)部基于ViewPager2實(shí)現(xiàn),Indicator和UI都可以自定義。

  • 總結(jié)

    以上是生活随笔為你收集整理的Android----banner使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。