Android ViewPage使用
Posted 今晚看星星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ViewPage使用相关的知识,希望对你有一定的参考价值。
文章目录
1 ViewPage介绍
- 它是android 3.0后引入的一个UI控件(视图滑动切换工具)
- 通过手势滑动可以完成View的切换,一般是用来做APP的引导页或者实现图片轮播
2 使用多个layout进行展示
2.2 使用 LayoutInflater
加载布局
//获取启动页面,将布局加载到UI
//LayoutInflater 将布局的.xml文件转换成View对象
LayoutInflater layoutInflater = getLayoutInflater();
view1 = layoutInflater.inflate(R.layout.image_layout_1,null);
view2 = layoutInflater.inflate(R.layout.image_layout_2,null);
3 PagerAdapter 联合多个界面
-
PagerAdapter
主要是对ViewPager进行数据适配,以实现ViewPager控件的滑动效果 -
getCount()
: 显示多少个页面 -
isViewFromObject(View, Object)
:判断返回的view是否是来自Object -
instantiateItem(ViewGroup, int)
:初始化指定位置的页面 -
destroyItem(ViewGroup, int, Object)
:销毁指定位置的页面
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class MyPageAdapter extends PagerAdapter {
// 定义视图列表
private List<View> viewList = new ArrayList<View>();
// 构造方法传入数据
public MyPageAdapter(List<View> viewList) {
this.viewList = viewList;
}
public MyPageAdapter() {
}
//初始化指定位置的页面
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
//将页面加入容器
container.addView(viewList.get(position));
//返回加载的页面
return viewList.get(position);
}
//销毁指定位置的页面
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(viewList.get(position));//删除页面
}
//显示多少个页面
@Override
public int getCount() {
return viewList.size();
}
//判断view 是否是object
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
}
4 在MainActivity
中创建并应用适配器
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.widget.ViewPager2;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
// 获取UI控件
private ViewPager myViewPager;
private View view1, view2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取ViewPager对象
myViewPager = (ViewPager)findViewById(R.id.myViewPager);
//获取三个启动页面,将布局和变量联系起来
//LayoutInflater 将布局的.xml文件转换成View对象
LayoutInflater layoutInflater = getLayoutInflater();
view1 = layoutInflater.inflate(R.layout.image_layout_1,null);
view2 = layoutInflater.inflate(R.layout.image_layout_2,null);
//创建视图列表
List<View> viewList = new ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
//创建适配器
MyPageAdapter myPagerAdapter = new MyPageAdapter(viewList);
//设置适配器
myViewPager.setAdapter(myPagerAdapter);
}
}
以上是关于Android ViewPage使用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ViewPager 中从 Activity 移动到 Fragment?未找到片段 ID 的视图
Android中Scrollview嵌套viewpage问题:viewpage设置非固定高点,按照自定义的scrollview 还是不能解决.