工作要用到ViewPager,但是翻了《第一行代码》,竟然没有相关的内容,因此只能求助于度娘了,通过学习他人博客与视频,做出了第一个小demo,在这儿整理一下,旨在理清使用步骤。
效果展示(图片作者Jan Erik Waider,侵删)
相关布局
ViewPager 是 android 扩展包 v4 包中的类
activity_main.xml 只包含一个ViewPager控件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.demo.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="340dp"/>
</RelativeLayout>
新建一个布局文件viewpager_item.xml,不需要有对应的activity,里面是一个ImageView布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/item_iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
</RelativeLayout>
图片资源的小处理
将图片对应的id封到了一个整形数组中,没有也无妨,这里的类名为
Images.java
package com.example.demo;
public class Images {
public final static int[] imageArray = new int[]{
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
R.drawable.image4
};
}
主要代码:
ViewPagerAdapter.java
package com.example.demo.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.example.demo.R;
public class ViewPagerAdapter extends PagerAdapter {
private Context context;
private LayoutInflater layoutInflater;
private int[] datas;
public ViewPagerAdapter(Context context, int[] datas) {
this.context = context;
this.datas = datas;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return datas.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
/*渲染具体一页数据*/
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
View layout = layoutInflater.inflate(R.layout.viewpager_item,null);
ImageView iv = layout.findViewById(R.id.item_iv);
//设置显示的图片
iv.setImageResource(datas[position]);
container.addView(layout);
return layout;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
MainActivity.java
package com.example.demo;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.example.demo.adapter.ViewPagerAdapter;
public class MainActivity extends AppCompatActivity {
private ViewPager vp;
private ViewPagerAdapter viewPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = findViewById(R.id.vp);
viewPagerAdapter = new ViewPagerAdapter(this,Images.imageArray);
vp.setAdapter(viewPagerAdapter);
}
}
总结
ViewPager还是比较简单的,和listview类似,都是先获得布局,然后创建适配器,最后绑定适配器即可