(1) バナー依存関係を導入する
Gradle
dependencies {
...
//轮播图依赖
implementation 'com.youth.banner:banner:1.4.9'
//glide框架依赖
implementation 'com.github.bumptech.glide:glide:4.6.1'
}
(2) ネットワーク権限を追加する
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
(3) レイアウトファイル
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="200dp" />
(四)Activity
import android.content.Context;
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 android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoaderInterface;
import java.util.ArrayList;
import java.util.List;
public class HomeFragment extends Fragment implements OnBannerListener {
private Banner banner;
private List<Integer> image = new ArrayList<>();
// private List<String> titles = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_home, container, false);
banner = view.findViewById(R.id.banner);
initData();
initView();
return view;
}
private void initData() {
image.clear();
// titles.clear();
image.add(R.drawable.one);
image.add(R.drawable.two);
image.add(R.drawable.three);
// titles.add("山喜欢");
// titles.add("水喜欢");
// titles.add("人说的话也喜欢");
}
private void initView() {
//设置指示器位置,小点点
// banner.setIndicatorGravity(BannerConfig.CENTER);
//设置图片加载器
banner.setImageLoader(new MyImageLoader());
//设置图片集合
banner.setImages(image);
// banner.setBannerTitles(titles);
//设置banner动画效果
// banner.setBannerAnimation(Transformer.Default);
//设置是否为自动轮播,默认是“是”
banner.isAutoPlay(true);
//设置内置样式,不显示title和小点点指示器
banner.setBannerStyle(BannerConfig.NOT_INDICATOR);
//设置轮播时间
banner.setDelayTime(3000);
//轮播图的监听
banner.setOnBannerListener(this);
//banner设置方法全部调用完毕时最后调用
banner.start();
}
//轮播图监听方法
@Override
public void OnBannerClick(int position) {
Log.i("tag", "你点了第"+position+"张轮播图");
}
//图片加载器
private class MyImageLoader implements ImageLoaderInterface {
@Override
public void displayImage(Context context, Object path, View imageView) {
Glide.with(context).load(path).into((ImageView) imageView);
}
@Override
public View createImageView(Context context) {
return null;
}
}
}
エフェクト画像(録画した画像が点滅し続ける理由はわかりませんが、実際には良いものです):
ちなみに、Bannerのよく使われるメソッド、プロパティ、定数を紹介します。
(1) 方法
メソッド名 |
説明 |
setBannerStyle(int BannerStyle) |
カルーセル スタイルを設定します (デフォルトは CIRCLE_INDICATOR) |
setIndicatorGravity(int型) |
インジケーターの位置を設定します(タイトルがない場合はデフォルトが右、タイトルがある場合はデフォルトが左) |
isAutoPlay(ブール値 isAutoPlay) |
自動回転するかどうかを設定します(デフォルトは自動) |
startAutoPlay() |
カルーセルを開始します |
stopAutoPlay() |
エンドカルーセル |
星() |
バナーのレンダリングを開始する |
setOffscreenPageLimit(int 制限) |
ビューページャ方式と同じ |
setBannerTitles(タイトルのリスト) |
カルーセルに表示する対応するタイトルと画像を設定します(渡されない場合、デフォルトではタイトルは表示されません) |
setDelayTime(整数時間) |
カルーセル画像の間隔時間を設定します (ミリ秒単位、デフォルトは 2000) |
setImages(Object[]/List<?>imagesUrl) |
カルーセル画像の設定 (すべてのパラメータ設定メソッドはこのメソッドの前に実行されます) |
setImages(Object[]/List<?>imagesUrl,OnLoadImageListener linstener) |
カルーセル画像を設定し、画像の読み込み方法をカスタマイズする |
setOnBannerClickListener(this) |
クリックイベントを設定します。添字は1から始まります |
setOnLoadImageLinstener(this) |
画像読み込みイベントを設定し、画像読み込み方法をカスタマイズできます |
setImageLoader(オブジェクトはImageLoaderを実装します) |
画像ローダーの設定 |
setOnPageChangeListener(this) |
ビューページャーのスライディングモニターを設定する |
setBannerAnimation(Class<? extends PageTransformer> トランスフォーマー) |
ビューページャのデフォルトのアニメーションを設定する |
setPageTansformer(boolean reverseDrawingOrder,ViewPager.PageTransformer トランスフォーマー) |
ビューページャーのカスタム アニメーションを設定する |
(2) Attributes 属性 (バナー レイアウト ファイル内で呼び出されます):
属性 |
形状 |
説明 |
遅延時間 |
整数 |
カルーセル実行時間、デフォルトは 2000 |
is_auto_play |
ブール値 |
自動的に回転するかどうか、デフォルトは true |
タイトルの背景 |
色 |
参照 |
タイトルテキストの色 |
色 |
タイトルのフォントの色 |
タイトルのテキストサイズ |
寸法 |
タイトルのフォントサイズ |
タイトルの高さ |
寸法 |
タイトルバーの高さ |
インジケーターの幅 |
寸法 |
インジケーターの円形ボタンの幅 |
インジケーターの高さ |
寸法 |
インジケーターの円形ボタンの高さ |
インジケーターマージン |
寸法 |
インジケータ間の間隔 |
インジケーター描画可能_選択済み |
参照 |
インジケーター選択の効果 |
インジケーター描画可能_未選択 |
参照 |
インジケーターのチェックなしの効果 |
画像スケールの種類 |
列挙型 |
imageviewのscaleTypeと同じ |
(3) 定数:
定数名 |
説明 |
所属方法 |
BannerConfig.NOT_INDICATOR |
インジケーターとタイトルを表示しない |
setBannerStyle |
BannerConfig.CIRCLE_INDICATOR |
円形のインジケーターを表示 |
setBannerStyle |
BannerConfig.NUM_INDICATOR |
デジタルインジケーターを表示 |
setBannerStyle |
BannerConfig.NUM_INDICATOR_TITLE |
数値インジケーターとタイトルを表示する |
setBannerStyle |
BannerConfig.CIRCLE_INDICATOR_TITLE |
円形インジケーターとタイトルを表示(縦表示) |
setBannerStyle |
BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE |
显示圆形指示器和标题(水平显示) |
setBannerStyle |
BannerConfig.LEFT |
指示器居左 |
setIndicatorGravity |
BannerConfig.CENTER |
指示器居中 |
setIndicatorGravity |
BannerConfig.RIGHT |
指示器居右 |
setIndicatorGravity |
(四)动画常量( setBannerAnimation调用):
Transformer.Default |
Transformer.Accordion |
Transformer.BackgroundToForeground |
Transformer.CubeIn |
Transformer.CubeOut |
Transformer.DepthPage |
Transformer.FlipVertical |
Transformer.RotateDown |
Transformer.RotateUp |
Transformer.Stack |
Transformer.Tablet |
Transformer.ZoomIn |
Transformer.ZoomOutSlide |