本文共 4046 字,大约阅读时间需要 13 分钟。
效果图:
一.这里是实现四个界面的左右拖动:
VIewPager资源的四个VIew.xmlwen文件,这里只是简易事件四个界面
演示其中一个代码:
view1.xml
</LinearLayout>
(这里只是用一个TextView指示界面内容,实际应用可以对其进行扩张)
二. activity_main.xml文件
</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 ListviewList; private List titleList; //实现构造方法 public MyPagerAdapter(List viewList,List 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文件中的 里添加 子标签 才起作用 */ @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时 适配器用:PagerAdapter 数据源是 List 适配器用 FragmentPagerAdapter 或 FragmentStatePagerAdapter */ private List viewList; //用于装适配器的资源,即四个VIew.xml文件对应的IView对象 private List 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对象 (上下文,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 (); 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
转载地址:http://ovoel.baihongyu.com/