Android-------使用第三方Banner實現對網路圖片的無線輪播
阿新 • • 發佈:2018-12-22
參考網址: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 extendsImageLoader{ //在該方法內用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);*/}}