用android viewpager实现轮播图的代码
时间: 2023-10-11 12:08:21 浏览: 62
好的,以下是一个使用 Android ViewPager 实现轮播图的简单示例程序。
1. 在布局文件中添加 ViewPager 和指示器(Indicator)控件:
```xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="200dp" />
<LinearLayout
android:id="@+id/indicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/viewPager"
android:layout_marginBottom="20dp"
android:gravity="center_horizontal"
android:orientation="horizontal" />
</RelativeLayout>
```
2. 创建一个 PagerAdapter 来为 ViewPager 提供数据:
```java
public class MyPagerAdapter extends PagerAdapter {
private Context mContext;
private int[] mImageIds;
public MyPagerAdapter(Context context, int[] imageIds) {
mContext = context;
mImageIds = imageIds;
}
@Override
public int getCount() {
return mImageIds.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(mContext);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageResource(mImageIds[position]);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ImageView) object);
}
}
```
3. 在 Activity 或 Fragment 中设置 ViewPager 和指示器:
```java
public class MainActivity extends AppCompatActivity {
private ViewPager mViewPager;
private LinearLayout mIndicator;
private int[] mImageIds = {R.drawable.image1, R.drawable.image2, R.drawable.image3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager = findViewById(R.id.viewPager);
mIndicator = findViewById(R.id.indicator);
mViewPager.setAdapter(new MyPagerAdapter(this, mImageIds));
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
updateIndicator(position);
}
@Override
public void onPageScrollStateChanged(int state) {}
});
addIndicator(mImageIds.length);
updateIndicator(0);
}
private void addIndicator(int count) {
for (int i = 0; i < count; i++) {
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.indicator_unselected);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
params.setMargins(8, 0, 8, 0);
mIndicator.addView(imageView, params);
}
}
private void updateIndicator(int position) {
for (int i = 0; i < mIndicator.getChildCount(); i++) {
ImageView imageView = (ImageView) mIndicator.getChildAt(i);
if (i == position) {
imageView.setImageResource(R.drawable.indicator_selected);
} else {
imageView.setImageResource(R.drawable.indicator_unselected);
}
}
}
}
```
在这个示例程序中,我们使用了一个 PagerAdapter 来为 ViewPager 提供数据,包括图片、标题等。我们还使用了一个指示器(Indicator)来显示当前页面的位置。当页面切换时,指示器的状态也会相应地更新。
希望这个示例程序对你有帮助!