1. 程式人生 > >Android-------使用第三方Banner實現對網路圖片的無線輪播

Android-------使用第三方Banner實現對網路圖片的無線輪播

參考網址:https://github.com/search(很詳細)

使用步驟:

1.在build.gradle中加入包,點選右上角的同步:

compile 'com.youth.banner:banner:1.4.9'

2.新增許可權到你的 AndroidManifest.xm

<uses-permission android:name="android.permission.INTERNET"> </uses-permission>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE
"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

3.在佈局檔案中新增Banner,可以設定自定義屬性

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" > <com.youth.banner.Banner android:id="@+id/ban" android:layout_width="match_parent" android:layout_height="250dp"> </com.youth.banner.Banner> </LinearLayout> 4.寫一個圖片載入器類並繼承ImageLoader
//定義的一個Bannerde 圖片載入器,繼承ImageLoader
public class BannerImageLoad extends 
ImageLoader{ //在該方法內用Glide進行載入圖片 @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into(imageView); } }

5.在Activity或者Fragment中配置Banner(這裡是在一個Fragment中進行配置的)

public class Fragment1 extends Fragment {
    private Banner ban;
    private String urlpath="http://zkread.com/htnewsroom/articles/tops";
    private Handler hand=new Handler(){
        @Override
public void handleMessage(Message msg) {
            if(msg.what==1){
                //用Gson解析資料並得到該資料的類
Gson gson=new Gson();
                News news = gson.fromJson(msg.obj.toString(), News.class);
                //得到要展示的圖片和標題的類的集合並遍歷
List<News.DataBean> data = news.getData();
                //新建一個存放圖片的集合和標題的集合
ArrayList<String> images=new ArrayList<>();
                ArrayList<String> title=new ArrayList<>();
                //遍歷完後把相應的資料新增到集合中
for (News.DataBean bean:data){
                    images.add(bean.getImgSrc());
                    title.add(bean.getTitle());
                }
                //將圖片和標題設定到Banner中
ban.setImages(images);
                ban.setBannerTitles(title);
                //開啟Banner
ban.start();
            }
        }
    };
    @Nullable
    @Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, container, false);
        ban=(Banner)view.findViewById(R.id.ban);
        //設定Banner
initview();
        //載入網路資料
loaddata();
        return view;
    }
    private void loaddata() {
     new Thread(){
         @Override
public void run() {

 //HttpUrl為一個寫好的通過HttpUrlConnection對網路進行請求的類(裡面有get和post請求)

 String str = HttpUrl.getUrlConnect(urlpath);
             Message msg=new Message();
             msg.what=1;
             msg.obj=str;
             hand.sendMessage(msg);
         }
     }.start();
    }
    private void initview() {
     //設定圖片載入器
BannerImageLoad bil=new BannerImageLoad();
        ban.setImageLoader(bil);
        //設定顯示樣式(顯示數字指示器和標題)
ban.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE);
       /* 
 //設定banner樣式
    banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
    //設定圖片載入器
    banner.setImageLoader(new GlideImageLoader());
    //設定圖片集合
    banner.setImages(images);
    //設定banner動畫效果
    banner.setBannerAnimation(Transformer.DepthPage);
    //設定標題集合(當banner樣式有顯示title時)
    banner.setBannerTitles(titles);
    //設定自動輪播,預設為true
    banner.isAutoPlay(true);
    //設定輪播時間
    banner.setDelayTime(1500);
    //設定指示器位置(當banner模式中有指示器時)
    banner.setIndicatorGravity(BannerConfig.CENTER);
*/}}