###代码实现 自定义ViewPagerandroid
public class BannerViewPager extends ViewPager {
private BannerAdapter mAdapter;
public BannerViewPager(Context context) {
super(context);
}
public BannerViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setAdapter(BannerAdapter adapter) {
this.mAdapter = adapter;
setAdapter(new BannerPagerAdapter());
}
//ViewPager在滑动的时候会一直不断的建立和销毁子View 因此它不会有内存泄露的状况出现
class BannerPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
//为了实现无线循环ViewPager 这里设置ViewPager的最大值为Int的最大类型
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
//官方推荐 这么写
return view==object;
}
//加载viewPager的子view
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView= mAdapter.getView(position);
container.addView(itemView);
return itemView;
}
//销毁ViewPager的只View
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
object=null;
}
}
}
复制代码
建立Adapterbash
public abstract class BannerAdapter {
public abstract View getView(int position);
}
复制代码
layout布局代码网络
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.administrator.allynmvp.view.BannerViewPager
android:id="@+id/banner_vp"
android:layout_width="match_parent"
android:layout_height="150dp">
</com.example.administrator.allynmvp.view.BannerViewPager>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
复制代码
初始化加载显示ide
public class MainActivity extends AppCompatActivity implements ViewControl {
MusicDataPresenter musicDataPresenter;
ListView listView;
ProgressBar progressBar;
TextView tvError;
BannerViewPager mBannerVp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getBannerData();
}
public void getBannerData() {
//这里经过网络加载无效广告轮播的图片
//初始化控件
mBannerVp.setAdapter(new BannerAdapter() {
@Override
public View getView(int position) {
//这个能够是一个ImageView也能够是一个布局文件 穿一个View进去就能够 这就是适配器模式的好处
ImageView imageView=new ImageView(MainActivity.this);
imageView.setBackgroundResource(R.mipmap.ic_launcher);
return imageView;
}
});
}
复制代码
此文章后续会增长更多的代码解释和扩展 敬请期待~~~布局