【ViewPager學習1】ViewPager實現廣告輪播圖
阿新 • • 發佈:2019-01-30
一、定義本地資料來源DataUtil類,為輪播圖提供資料來源。
DataUtil.java
package com.administrator.taolvyou.util; import android.content.Context; import android.widget.ImageView; import java.util.ArrayList; import java.util.List; /** * 資料來源 * Created by Administrator on 2018/5/8. */ public class DataUtil { /** * @param context * @param icons * @return */ public static List<ImageView> getHeaderAddInfo(Context context, int icons[]) { List<ImageView> datas = new ArrayList<>(); for (int i = 0; i < icons.length; i++) { ImageView icon = new ImageView(context); icon.setScaleType(ImageView.ScaleType.CENTER_CROP); icon.setImageResource(icons[i]); datas.add(icon); } return datas; } }
二、為介面和資料之間新增介面卡
MainHeaderAdAdapter.java
package com.administrator.taolvyou.adapter; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import java.util.List; /** * Created by Administrator on 2018/5/8. */ public class MainHeaderAdAdapter extends PagerAdapter { protected Context context; protected List<ImageView> images; public MainHeaderAdAdapter(Context context, List<ImageView> images){ this.context=context; this.images=images; } @Override public int getCount() { //對資料作非空判斷 return null!=images?images.size():0; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(images.get(position)); return images.get(position); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(images.get(position)); } }
三、編寫佈局檔案
fragment_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/vpager_main_header_ad" android:layout_width="match_parent" android:layout_height="120dp"> </android.support.v4.view.ViewPager> <include android:layout_width="match_parent" android:layout_height="wrap_content" layout="@layout/main_search" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/nav_header_index" android:layout_centerHorizontal="true" android:layout_marginTop="80dp" /> </RelativeLayout>
main_search.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<!--掃一掃-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_marginLeft="10dp"
>
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/main_scan"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="掃一掃"
android:textColor="#ffffff"
android:textSize="20sp"/>
</LinearLayout>
<!--搜尋-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="48dp"
android:orientation="horizontal"
android:layout_weight="1"
android:background="@mipmap/main_header_sourch"
android:gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/search"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="目的地/景點/酒店/門票"
android:background="@null"
android:textSize="18sp"/>
</LinearLayout>
<!--訊息-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_marginRight="10dp">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/news"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="訊息"
android:textColor="#ffffff"
android:textSize="20sp"/>
</LinearLayout>
</LinearLayout>
如果xml檔案的地方,圖片處報紅,請下載本文配套程式碼,從中提取該圖片
四、Java程式碼中呼叫
MainHeaderAdAdapter.java
package com.administrator.taolvyou.fragment;
import android.os.Bundle;
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 com.administrator.taolvyou.R;
import com.administrator.taolvyou.adapter.MainHeaderAdAdapter;
import com.administrator.taolvyou.util.DataUtil;
/**
* 主介面檢視
*/
public class MainFragment extends Fragment{
protected int [] icons={R.mipmap.header_pic_ad1, R.mipmap.header_pic_ad2,R.mipmap.header_pic_ad1};
protected ViewPager mVPagerHeaderAd;//廣告頭
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main,container,false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mVPagerHeaderAd= (ViewPager) getView().findViewById(R.id.vpager_main_header_ad);
MainHeaderAdAdapter adapter=new MainHeaderAdAdapter(getActivity(), DataUtil.getHeaderAddInfo(getActivity(),icons));
mVPagerHeaderAd.setAdapter(adapter);
}
}
執行效果:
專案Demo下載
https://download.csdn.net/download/weimeig/10400834