1. 程式人生 > >自定義Banner(寫在Fragment裡了)

自定義Banner(寫在Fragment裡了)

Fragment類裡新增 Banner

package com.example.lenovo.myapplication.Fragment.Fragment;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
//.01
import com.example.lenovo.myapplication.Bean.MyimgaeBean02;
import com.example.lenovo.myapplication.Bean.MyloadBean;
import com.example.lenovo.myapplication.Utils.Utils;
import com.youth.banner.Banner;
//.02
import com.youth.banner.BannerConfig;

import com.example.lenovo.myapplication.R;
import com.youth.banner.loader.ImageLoader;

import java.util.ArrayList;
import java.util.List;

public class JijiangFragment extends Fragment {
    private Banner jijiang_banner;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.xiaoxi_jijiang,container,false);

        return view;

    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //獲得Banner這個試圖
        jijiang_banner = view.findViewById(R.id.jijiang_banner);
        //為banner設定樣式 裡面的引數需要導包 包括Banner也要導包
        //而我是手寫導包 參看.01  //banerconfig 導包 參考 .02
        jijiang_banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);

        //為banner設定圖片載入器
        jijiang_banner.setImageLoader(new ImageLoader() {
            @Override
            public void displayImage(Context context, Object path, ImageView imageView) {
                // 001 把路徑強轉-path
                MyimgaeBean02.NewsLists banner = (MyimgaeBean02.NewsLists) path;
                //用imageloder 賦值
                com.nostra13.universalimageloader.core.ImageLoader.getInstance()
                        //display
                        .displayImage(
                                banner.getPicUrl(),imageView
                        );
            }

            //002 當賦值圖片的時候
            @Override
            public ImageView createImageView(Context context) {
                ImageView imageView = new ImageView(context);
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

                return imageView;
            }

        });

        initData();
    }
    private String urlStr="https://api.tianapi.com/wxnew/?key=c4aa776e0a51d57d6750511e2baa46b6&num=6&page=1";
    private void initData() {
        Utils.getInstance().getRequest03(urlStr, MyimgaeBean02.class, new Utils.Callback<MyimgaeBean02>() {
            @Override
            public void onSuccess(MyimgaeBean02 o) {
                if(o.getCode()!=200){
                    Toast.makeText(getActivity(),"網路錯題",Toast.LENGTH_SHORT).show();
                    return;
                }
                //為banner設定圖片
                jijiang_banner.setImages(o.getNewslist());
                //為banner設定標題  裡面引數為下邊的方法
                //
                jijiang_banner.setBannerTitles(getTitle(o));
                //完畢
                jijiang_banner.start();
            }
        });
    }


    //需要一個返回List的值 還需要呼叫方法的時候把這個
    private List<String> getTitle(MyimgaeBean02 myimgaeBean02){
        List<String> list = new ArrayList<>();
        for (int i = 0; i < myimgaeBean02.getNewslist().size(); i++) {
            list.add(myimgaeBean02.getNewslist().get(i).getTitle());
        }
        return list;
    }
}

//Banner的Xml佈局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.youth.banner.Banner
        android:layout_width="match_parent"
        android:layout_height="240dp"
        android:id="@+id/jijiang_banner">

    </com.youth.banner.Banner>

</android.support.constraint.ConstraintLayout>

以上功能實現 皆來自 Github 裡的依賴 compile 'com.youth.banner:banner:1.4.10'