安卓ViewPager详解——基础使用
Posted 有头发的程序猿#
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓ViewPager详解——基础使用相关的知识,希望对你有一定的参考价值。
今天,我通过博客来给你们拓展一下ViewPager的使用,本博客先介绍ViewPager最基本的使用,下一篇我会讲一下ViewPager+Fragement+TabLayout三大组合,搭载一个我们平时比较常见的界面结构
下面是本节课ViewPager的效果图:
1.首先,依旧是现在我们的项目中导入ViewPager的包
implementation 'com.android.support:viewpager:28.0.0'
2.在布局中添加我们的ViewPager控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
tools:context=".MainActivity">
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:clipChildren="false"
>
</androidx.viewpager.widget.ViewPager>
</LinearLayout>
这里特别注意的是:
android:clipChildren=“false”
这个属性默认是true,作用就是限制子view在父View范围内显示。 加了这个属性意思是ViewPager中间图片的两边可以显示部分左右两边的图片。同时要在逻辑代码中加viewPager.setPageMargin()设置间距
注意LinearLayout和ViewPager都要设置,否则没有效果。
下面是主函数逻辑代码:
public class MainActivity extends AppCompatActivity
ViewPager viewPager ;
int []images = R.drawable.one ,R.drawable.two,R.drawable.three,
R.drawable.four,R.drawable.five,R.drawable.six,
R.drawable.seven;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.viewpager);
viewPager.setPageMargin(10); //两个page间距,要配合布局中 android:clipChildren="false"使用
viewPager.setOffscreenPageLimit(3); //ViewPager预加载多少张图片
viewPager.setAdapter(new PagerAdapter()
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object)
container.removeView((View)object);
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position)
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(images[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY); //使图片从中心放大铺满整个视图
container.addView(imageView);
return imageView;
@Override
public int getCount()
return images.length;
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object)
return view==object;
);
我们一点点解析上面的代码
首先要为viewpager绑定这点
接着我们需要为viewpager设置Adapter适配器,我们直接在setAdapter()里面new 一个PagerAdapter
并重写其四个方法
1.int getCount()
2.void destroyItem(ViewGroup container, int position,Object object)
3.Object instantiateItem(ViewGroup container, int position)
4.boolean isViewFromObject(View view, Object object)
@Override
public int getCount()
return images.length;
我们先看第一个,这里是返回你滑动的view视图的个数
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object)
container.removeView((View)object);
这里是从当前的container中删除指定position的view
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position)
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(images[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY); //使图片从中心放大铺满整个视图
container.addView(imageView);
return imageView;
这里是初始化我们的View,把我们的Imageview要显示的图片设置,然后让改图片铺满,接着把我们的图片添加到container中,并将其返回
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object)
return view==object;
这个函数是将传过来的key与当前视图比较,一般是返回view==object就行
好,viewpager的基本应用就先讲到这里,下一篇博客我会写viewpager+tablayout+fragment。
,
以上是关于安卓ViewPager详解——基础使用的主要内容,如果未能解决你的问题,请参考以下文章