先看下面效果:
代码实现xml部分:
activity_main
item_pic
java代码
MainActivity
package com.antbyte.viewpagerdemo;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ViewPager view_pager;
private LinearLayout dot_ll;
MyViewPageAdapter pageAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initAdapter();
setData(1);
}
private int pagerPosition = 0;
List mViewList = new ArrayList<>();
private void initAdapter() {
pageAdapter = new MyViewPageAdapter(mViewList);
view_pager.setAdapter(pageAdapter);
view_pager.addonPageChangeListener(new ViewPager.onPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
pagerPosition = position;
for (int i = 0; i < dot_ll.getChildCount(); i++) {
if (i == pagerPosition) {
dot_ll.getChildAt(i).setBackgroundResource(R.drawable.shape_dot_2);
} else {
dot_ll.getChildAt(i).setBackgroundResource(R.drawable.shape_dot_1);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void initView() {
view_pager = (ViewPager) findViewById(R.id.view_pager);
dot_ll = (LinearLayout) findViewById(R.id.dot_ll);
}
public void one(View view) {
setData(1);
}
public void multi(View view) {
setData(3);
}
private void setData(int num) {
dot_ll.removeAllViews();
mViewList.clear();
for (int i = 0; i < num; i++) {
if (num > 1) {
View dot_view = new View(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(DensityUtil.dip2px(this, 7), DensityUtil.dip2px(this, 7));
if (pagerPosition == i) {
dot_view.setBackgroundResource(R.drawable.shape_dot_2);
} else {
dot_view.setBackgroundResource(R.drawable.shape_dot_1);
}
layoutParams.setMargins(10, 0, 0, 0);
dot_view.setLayoutParams(layoutParams);
dot_ll.addView(dot_view);
}
View view = getLayoutInflater().inflate(R.layout.item_pic, null);
ImageView iv = view.findViewById(R.id.iv);
switch (i) {
case 0:
iv.setImageResource(R.mipmap.ic_pic1);
break;
case 1:
iv.setImageResource(R.mipmap.ic_pic2);
break;
case 2:
iv.setImageResource(R.mipmap.ic_pic3);
break;
}
mViewList.add(view);
}
pageAdapter.notifyDataSetChanged();
}
}
适配器MyViewPageAdapter
package com.antbyte.viewpagerdemo;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import java.util.List;
public class MyViewPageAdapter extends PagerAdapter {
private List list_view;
public MyViewPageAdapter(List list_view) {
this.list_view = list_view;
}
@Override
public int getCount() {
Log.e("getCount-》", list_view.size() + "aaa");
return list_view.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Log.e("instantiateItem->", position + "aaa");
try {
container.addView(list_view.get(position));
return list_view.get(position);
} catch (Exception e) {
return null;
}
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
Log.e("instantiateItem->", "destroyItemaaa" + position);
container.removeView((View) object);
}
}
尺寸转换类DensityUtil
package com.antbyte.viewpagerdemo;
import android.content.Context;
import android.content.res.Resources;
import android.view.WindowManager;
public class DensityUtil {
public static final String TAG = "DensityUtil";
private static WindowManager windowManager;
private static int width;
private static int height;
public static int dip2px(Context context, float dpValue) {
Resources resources = context.getResources();
float scale = 0;
if(resources != null){
scale = resources.getDisplayMetrics().density;
}
return (int) (dpValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue) {
Resources resources = context.getResources();
float scale = 0;
if(resources != null){
scale = resources.getDisplayMetrics().density;
}
return (int) (pxValue / scale + 0.5f);
}
public static int px2sp(Context context, float pxValue) {
Resources resources = context.getResources();
float fontScale = 0;
if(resources != null){
fontScale = resources.getDisplayMetrics().scaledDensity;
}
return (int) (pxValue / fontScale + 0.5f);
}
public static int sp2px(Context context, float spValue) {
Resources resources = context.getResources();
float fontScale = 0;
if(resources != null){
fontScale = resources.getDisplayMetrics().scaledDensity;
}
return (int) (spValue * fontScale + 0.5f);
}
}
小圆点shape_dot_1
shape_dot_2
资源下载地址:viewpager+PagerAdapter刷新数据-Android文档类资源-CSDN下载



