android studio轮播图代码
时间: 2023-09-09 21:14:01 浏览: 96
在 Android Studio 中实现轮播图可以使用 ViewPager 和 PagerAdapter。以下是一个简单的示例:
1. 在 XML 布局文件中添加 ViewPager 和指示器(Indicator):
```xml
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="200dp"/>
<LinearLayout
android:id="@+id/indicatorLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"/>
```
2. 创建 PagerAdapter 类,用于提供轮播图的视图:
```java
public class MyPagerAdapter extends PagerAdapter {
private Context mContext;
private int[] mImageIds = {R.drawable.image1, R.drawable.image2, R.drawable.image3};
public MyPagerAdapter(Context context) {
mContext = context;
}
@Override
public int getCount() {
return mImageIds.length;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mImageIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((ImageView) object);
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
}
```
3. 在 Activity 或 Fragment 中设置 ViewPager 和指示器:
```java
ViewPager viewPager = findViewById(R.id.viewPager);
MyPagerAdapter adapter = new MyPagerAdapter(this);
viewPager.setAdapter(adapter);
LinearLayout indicatorLayout = findViewById(R.id.indicatorLayout);
for (int i = 0; i < adapter.getCount(); 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(10, 0, 10, 0);
indicatorLayout.addView(imageView, params);
}
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
for (int i = 0; i < indicatorLayout.getChildCount(); i++) {
ImageView imageView = (ImageView) indicatorLayout.getChildAt(i);
if (i == position) {
imageView.setImageResource(R.drawable.indicator_selected);
} else {
imageView.setImageResource(R.drawable.indicator_unselected);
}
}
}
});
```
这样就可以实现一个简单的轮播图了。需要注意的是,为了避免内存泄漏,需要在 destroyItem 方法中将视图从容器中移除。
阅读全文