ViewPager图片左右滑动
直接上代码吧:
1,
private LinearLayout mLinearLayout;
private ViewPager viewPager;
private ImageView imageView;//显示数组图片的View
private List<ImageView> imgsArray;//图片数组
private List<ImageView> diandianArray;//点数组
private List<String> imageList;
```,
2,
rl_one=(RelativeLayout)findViewById(R.id.rl_one);
rl_two_pic=(RelativeLayout)findViewById(R.id.rl_two_pic);
imageList=new ArrayList<>();
//xml中的LinearLayout布局
mLinearLayout = (LinearLayout)findViewById(R.id.layout);
viewPager = (ViewPager)findViewById(R.id.viewPager);
viewPager.setOnPageChangeListener(this);
diandianArray=new ArrayList<>();
imgsArray=new ArrayList<>();
3,
// +++++++++++++++++++++++++++++++++++++++++++++ViewPager+++++++++++++++++++++++++++++++++++++++++++++++++++++++
private void initBigPic(String imageUrl) {
mLinearLayout.removeAllViews();
viewPager.removeAllViews();
imgsArray.clear();
diandianArray.clear();
//设置图片resource的view
int index=0;
for(int i = 0; i < imageList.size(); i++){
imageView = new ImageView(this);
imgsArray.add(imageView);
Log.d("info","加载的图片是=="+imageList.get(i));
Glide.with(mContext) //配置上下文
.load(imageList.get(i)) //设置图片路径(fix #8,文件名包含%符号 无法识别和显示)
.error(R.mipmap.ic_launcher) //设置错误图片
.placeholder(R.mipmap.ic_launcher) //设置占位图片
.diskCacheStrategy(DiskCacheStrategy.ALL)//缓存全尺寸
.into((ImageView) imageView);
if(imageList.get(i).equals(imageUrl)){
index=i;
}
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rl_one.setVisibility(View.VISIBLE);
rl_two_pic.setVisibility(View.GONE);
setShowBigPic(false);
mLinearLayout.removeAllViews();
viewPager.removeAllViews();
imgsArray.clear();
diandianArray.clear();
}
});
}
// viewPager.setCurrentItem(index);
//设置点点的view++++++++++++++++++++++++++++++++++++
diandianArray.clear();
mLinearLayout.removeAllViews();
for(int i = 0 ; i < imageList.size(); i++){
imageView = new ImageView(this);
// diandianArray[i] = imageView;
diandianArray.add(imageView);
if(i == 0){
diandianArray.get(i).setBackgroundResource(R.mipmap.issel_ok);
}else{
diandianArray.get(i).setBackgroundResource(R.mipmap.issel_nosel);
}
Log.e("info", "diandianArray:" + diandianArray);
//此处通过方法来设置点点的布局属性,并将点点的布局属性放入到xml中的mLinearLayout,显示出来
LinearLayout.LayoutParams linearLayout = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
linearLayout.width = 20;
linearLayout.height = 20;
linearLayout.leftMargin = 5;
linearLayout.rightMargin = 5;
linearLayout.bottomMargin = 10;
linearLayout.topMargin = 10;
mLinearLayout.addView(imageView,linearLayout);
}
Log.d("info","数量是=="+imageList.size()+" "+imgsArray.size());
viewPager.setAdapter(new ContentAdapter());
}
@Override
public void onPageScrollStateChanged(int arg0) {
Log.e("info", "onPageScrollStateChanged()方法有没有响应啊,吱一声啊!1");
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
Log.e("info", "onPageScrolled()方法有没有响应啊,吱一声啊!2");
}
@Override
public void onPageSelected(int position) {
Log.e("info", "onPageSelected()方法有没有响应啊,吱一声啊!3");
for(int i = 0; i < diandianArray.size(); i++){
diandianArray.get(position).setBackgroundResource(R.mipmap.issel_ok);
if(i != position){
diandianArray.get(i).setBackgroundResource(R.mipmap.issel_nosel);
}
}
}
//更新数量
public void UpdateNumber() {
imageList.clear();
for (int i=0;i<images.size();i++){
if(images.get(i).equals("foot")){
}else {
imageList.add(images.get(i));
}
}
}
public class ContentAdapter extends PagerAdapter {
@Override
public int getCount() {
Log.d("info","ContentAdapter getCount");
return imageList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
Log.d("info","ContentAdapter isViewFromObject");
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
Log.d("info","ContentAdapter 移除了 控件==="+position+" 数量是=="+imgsArray.size());
container.removeView(imgsArray.get(position));
// ContentAdapter 移除了 控件===0 数量是==1
// ContentAdapter 移除了 控件===1 数量是==1
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Log.d("info","ContentAdapter 添加了控件 instantiateItem");
container.addView(imgsArray.get(position),0);
return imgsArray.get(position);
}
}
4,布局:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rl_two_pic"
android:layout_gravity="center" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal|center_vertical"
android:id="@+id/layout" >
</LinearLayout>
</RelativeLayout>
OK 以上就是简单的代码了, 这个滑动吧, 左右滑动到最大就会停止,不过 有个缺陷,当我在 RecycleView列表控件点击某个图片 显示 这个 时候,不能指定默认先显示哪个图,大家可以看看 价格方法,