ViewPager作为V4包下的控件,是在APP开发中由很大的使用概率,基本每个APP有必不可少的引导页,就是ViewPager完成的,对于提升用户体验,有很大的帮助。
首先是构成ViewPager需要的内容
1.List < View> list 数据源 和PagerAdapter适配器
2.List< Fragment> list 数据源和FragmentPagerAdapter适配器
今天用第一种
首先是主Activity的布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.administrator.viewpage.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_height="match_parent"
android:layout_width="match_parent" />
<LinearLayout
android:id="@+id/dot"
android:layout_width="120dp"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp"
android:gravity="center"
android:layout_marginLeft="10dp"
android:layout_height="40dp">
</LinearLayout>
</RelativeLayout>
然后依次是3个要加入ViewPager所需要的3是个view绑定的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/txt_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一个界面"
android:textSize="30dp"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/txt_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第二个界面"
android:textSize="30dp"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/txt_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第三个界面"
android:textSize="30dp"/>
</LinearLayout>
主要的代码实现
package com.example.administrator.viewpage;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Layout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.example.administrator.viewpage.Adapter.viewPageradapter;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
protected List<View> views;
protected ViewPager viewPager;
protected int[] view_id = {R.layout.one_activity, R.layout.two_activity, R.layout.three_activity};
protected viewPageradapter pageradapter;
protected ImageView imageView;
protected List<ImageView> image_list;
protected ViewGroup viewGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initview();
views = getViewPagerdata();
image_list=getdot();
Log.e("数据", String.valueOf(views.size()));
pageradapter = new viewPageradapter(MainActivity.this, views);
viewPager.setAdapter(pageradapter);
viewPager.setCurrentItem(0);
image_list.get(0).setImageResource(R.drawable.ic_launcher_foreground);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for(int i=0;i<image_list.size();i++)
{
if(i==position)
{
image_list.get(position).setImageResource(R.drawable.ic_launcher_foreground);
}
else
image_list.get(i).setImageResource(R.drawable.ic_launcher_background);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void initview() {
views = new ArrayList<>();
viewPager = findViewById(R.id.viewpager);
image_list=new ArrayList<>();
viewGroup=findViewById(R.id.dot);
}
public List<View> getViewPagerdata() {
List<View> lists = new ArrayList<>();
for (int i = 0; i < view_id.length; i++) {
lists.add(LayoutInflater.from(MainActivity.this).inflate(view_id[i], null));
}
return lists;
}
public List<ImageView> getdot()
{
List<ImageView> imageViews=new ArrayList<>();
for (int i = 0; i <views.size() ; i++) {
imageView=new ImageView(MainActivity.this);
imageView.setImageResource(R.drawable.ic_launcher_background);
imageView.setMaxHeight(20);
imageView.setMaxWidth(20);
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(20,20);
params.leftMargin=20;
imageView.setLayoutParams(params);
viewGroup.addView(imageView);
imageViews.add(imageView);
}
return imageViews;
}
}
首先添加视图到数据源中,之后建立适配器 重写4个方法,有2个要自己写
适配器代码
package com.example.administrator.viewpage.Adapter;
import android.content.Context;
import android.database.Cursor;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.CursorTreeAdapter;
import java.util.List;
/**
* Created by Administrator on 2018/6/11 0011.
*/
public class viewPageradapter extends PagerAdapter {
Context context;
List<View> list;
public viewPageradapter(Context context, List<View> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(list.get(position));
}
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
View child=list.get(position);
container.addView(child);
return child;
}
}
在instantiateItem()方法中加入视图在ViewPager中,最后完成Viewpager的内容添加。就完成的ViewPager的基本使用内容了
截图
原文作者:俞试晨
原文链接:点击这里