ViewPager的简单应用
ViewPager是android扩展包v4包中的类,这个类有大致下面几个特点
1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。
2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。
3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
下面只来介绍一下ViewPager的简单实现
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<!-- 因为ViewPager是v4包里的控件所以使用时要把包名也写上 -->
<android.support.v4.view.ViewPager
android:id="@+id/bannerId"
android:layout_width="match_parent"
android:layout_height="100dp"/>
</RelativeLayout>
然后随便放几张广告图片进项目就可以开始写activity了
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
public class MainActivity extends Activity {
private int imgs[]={R.drawable.banner01,R.drawable.banner02,R.drawable.banner03};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setBannerViewPager();
}
/**初始化viewpager*/
private void setBannerViewPager() {
ViewPager vPager=(ViewPager)
findViewById(R.id.bannerId);
PagerAdapter adapter=new BannerAdapter();
vPager.setAdapter(adapter);
}
class BannerAdapter extends PagerAdapter{
/**返回item的个数*/
@Override
public int getCount() {
return imgs.length;
}
/**
* 当此方法返回值为true,才会显示对应的item
* @param arg0 为添加到ViewPager容器的一个item
* @param arg1 为instantiateItem的返回值
* */
@Override
public boolean isViewFromObject(
View arg0, Object arg1) {
return arg0==arg1;
}
/**初始化ViewPager中的item*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
//1.item view
ImageView imageView=new ImageView(MainActivity.this);
imageView.setScaleType(ScaleType.FIT_XY);//设置缩放模式
//2.item data
int img=imgs[position];
//3.bind view
imageView.setImageResource(img);
//4.add view to container
container.addView(imageView);
return imageView;//返回值相当于一个key
}
/**销毁ViewPager中的item
* @param object 为instantiateItem返回的值
* */
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
}