ViewPager通过自定义适配器MyPagerAdapter实现界面导航(上标题)

简介: ViewPager ViewPager的使用技巧其实有很多,这里只是我个人 平时学习得到的经验,希望对大家有所帮助,如有不对还请见谅。 很乐意接纳大家的意见与建议,本人邮箱: 893239524@qq.com

效果图:

0065b789d21c9b0d20eda5d4c8c650d25bafb525


一.这里是实现四个界面的左右拖动:

VIewPager资源的四个VIew.xmlwen文件,这里只是简易事件四个界面

演示其中一个代码:

view1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#ff0"
android:layout_height="match_parent">


<TextView
android:text="界面1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

</LinearLayout>


(这里只是用一个TextView指示界面内容,实际应用可以对其进行扩张)


二. activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="viewpager.lin.com.viewpager_daohang.MainActivity">


<!--PagerTabStrip给ViewPager设置标题-->
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
>

<!--PagerTabStrip标题标签-->
<android.support.v4.view.PagerTabStrip
android:id="@+id/tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foregroundGravity="top"
>

</android.support.v4.view.PagerTabStrip>

(这里的PagerTabStrip和PagerTitleStrip都是界面标题的标签,效果图中的 空间、群聊、公众号等的显示,实际应用众二者选其一就行,两个都写是前面一个会被后面一个覆盖,这里我使是用PagerTabStrip

<!--
<android.support.v4.view.PagerTitleStrip
android:id="@+id/tit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foregroundGravity="top"
>
</android.support.v4.view.PagerTitleStrip>
-->

</android.support.v4.view.ViewPager>

</LinearLayout>


三.自定义适配器 MyPagerAdapter.java



import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;


public class MyPagerAdapter extends PagerAdapter{ //继承适配器

private List<View>viewList;
private List<String> titleList;

//实现构造方法
public MyPagerAdapter(List<View> viewList,List<String> titleList){
this.viewList=viewList;
this.titleList=titleList;
}

/*
ViewPager正常一次加载三个
多余的摧毁
*/

@Override
public int getCount() {
return viewList.size(); //返回当前页卡数量
}

@Override
public boolean isViewFromObject(View view, Object object) { //View是否来自对象
return view==object;
}


@Override
public Object instantiateItem(ViewGroup container, int position) { //实例化一个页卡
container.addView(viewList.get(position)); //position代表当前的位置(所定位的View)
return viewList.get(position);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) { //销毁页卡
container.removeView(viewList.get(position));
}


/*
设置Viewpager页卡的标题
在main_activity.xml文件中的<ViewPager/>里添加<android.support.v4.view.PagerTabStrip/>子标签 才起作用
*/
@Override
public CharSequence getPageTitle(int position) { //返回当前view对应的标题
return titleList.get(position);
}
}



四.代码实现:MainActivity.java



import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
/*
数据源是 List<View>时 适配器用:PagerAdapter
数据源是 List<Fragment> 适配器用 FragmentPagerAdapter 或 FragmentStatePagerAdapter
*/
private List<View>viewList; //用于装适配器的资源,即四个VIew.xml文件对应的IView对象
private List<String> titleList; //用于装标题文本
private ViewPager pager; //实例
private PagerTabStrip tab; //标题实例
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无系统标题栏
setContentView(R.layout.activity_main);

viewList=new ArrayList<View>(); //创建数据源

//将布局转化为View对象 (上下文,ID,父组件)
View view1=View.inflate(MainActivity.this,R.layout.view1,null);
View view2=View.inflate(MainActivity.this,R.layout.view2,null);
View view3=View.inflate(MainActivity.this,R.layout.view3,null);
View view4=View.inflate(MainActivity.this,R.layout.view4,null);

viewList.add(view1);//加载资源
viewList.add(view2);
viewList.add(view3);
viewList.add(view4);

//为每一个页面设置标题资源
titleList=new ArrayList<String>();
titleList.add("新朋友");
titleList.add("群聊");
titleList.add("公众号");
titleList.add("空间");

//为标题设置属性
tab= (PagerTabStrip) findViewById(R.id.tab); //标题对象
tab.setDrawFullUnderline(false); //标题底部无线条
tab.setBackgroundColor(4); //设置标题背景颜色
//tab.setTabIndicatorColor(color.GREEN); //设置菜单字样底部的线条颜色

//初始化ViewPager
pager= (ViewPager) findViewById(R.id.pager);

//创建pagerAdapter适配器
MyPagerAdapter myPagerAdapter=new MyPagerAdapter(viewList,titleList);
pager.setAdapter(myPagerAdapter);

}
}

代码:

项目地址:https://github.com/linyuanbin/ViewPager



目录
相关文章
|
8月前
|
Android开发
Android 使用ViewPager和自定义PagerAdapter实现轮播图效果
Android 使用ViewPager和自定义PagerAdapter实现轮播图效果
70 0
|
数据安全/隐私保护
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
102 0
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
|
Java 容器
解决ViewPager+多Fragment切换出现空白页面的问题
解决ViewPager+多Fragment切换出现空白页面的问题
536 0
解决ViewPager+多Fragment切换出现空白页面的问题
简单几行代码让ViewPager实现垂直滑动效果
近几日有网友在群里提问:有没有大神做过ViewPager实现垂直滑动效果。其实这个问题实现很简单,下面就简单的讲一下实现步骤: 先来看一张效果图:(你会发现,切换ViewPager慢一些,会看到颜色过渡效果,so beautiful) 垂直ViewPager演示 一、首先写一个类继承ViewPager,在构造方法里面设置viewpage的切换动画,然后重写onInterceptTouchEvent,对事件是否处理进行判断。
1616 0
|
XML Android开发 数据格式
xamarin Tablayout+Viewpager+Fragment顶部导航栏
最近几天不忙,所以把项目中的顶部导航栏的实现归集一下。android中使用TabLayout+ViewPager+Fragment制作顶部导航非常常见,代码实现也比较简单。当然我这个导航栏是基于xamarin android的。
2151 0
|
Android开发 容器
Android开发之ViewPager切换动画
Android从3.0开始,ViewPager也开始有了切换动画,ViewPager有个setPageTransformer()方法,用于设置ViewPager切换时的动画效果。
901 0

热门文章

最新文章