博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewPage控件
阅读量:7076 次
发布时间:2019-06-28

本文共 6740 字,大约阅读时间需要 22 分钟。

hot3.png

181120_zHnY_1417500.jpg181124_jFoC_1417500.jpg

ViewPage标签:

使用android.support.v4.view.ViewPager 包为了更好兼容低版本。

                 
                

将Layout布局转换成View对象

LayoutInflater if = getLayoutInflater().from(this);if.inflate(resoure,root);View.inflate(context,resoure,root);

需要用到的适配器:

        PagerAdapter 数据源 :List<View> 每次只3个3个进行加载view,比如现在显示的页面是 2,3,4  那么1个页面就会被destroyItem()方法销毁掉

    FragmentPagerAdapter 数据源 :List<Fragmemt>  一次加载全部的Fragment

FragmentStatePagerAdapter 数据源:List<Frament>  跟PagerAdapter 一样,每次也只会动态3个3个进行加载。

贴上代码例子    

    布局文件 main.xml

          
        
                        

    view1.xml 依次建立 view2 view3 view4

     

activity写法

package com.example.viewpage;import java.util.ArrayList;import java.util.List;import com.example.viewpage.adapter.MyFragmentPageAdapter;import com.example.viewpage.adapter.MyPageAdpter;import com.example.viewpage.fragment.MyFragment1;import com.example.viewpage.fragment.MyFragment2;import com.example.viewpage.fragment.MyFragment3;import com.example.viewpage.fragment.MyFragment4;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.view.PagerTabStrip;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.View;import android.widget.Toast;import android.R.string;import android.app.Activity;import android.graphics.Color;public class MainActivity extends FragmentActivity implements OnPageChangeListener{	private List
 viewList; //数据源 private ViewPager viewPager ; private List
 titleList; private PagerTabStrip tab; private List
 fragList;//数据源 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); viewPager = (ViewPager) findViewById(R.id.pager); tab = (PagerTabStrip) findViewById(R.id.tab); viewList = new ArrayList
(); titleList = new ArrayList
(); fragList = new ArrayList
(); //加载View View view1 = View.inflate(this, R.layout.view1, null); View view2 = View.inflate(this, R.layout.view2, null); View view3 = View.inflate(this, R.layout.view3, null); View view4 = View.inflate(this, R.layout.view4, null); viewList.add(view1); viewList.add(view2); viewList.add(view3); viewList.add(view4); fragList.add(new MyFragment1()); fragList.add(new MyFragment2()); fragList.add(new MyFragment3()); fragList.add(new MyFragment4()); //加载title titleList.add("第1页"); titleList.add("第2页"); titleList.add("第3页"); titleList.add("第4页"); //设置PagerTabStrip的属性 tab.setBackgroundColor(Color.YELLOW); tab.setTextColor(Color.GREEN); tab.setDrawFullUnderline(false);//长线不显示 tab.setTabIndicatorColor(Color.BLUE); MyPageAdpter myPageAdpter = new MyPageAdpter(viewList,titleList); MyFragmentPageAdapter fragmentPageAdapter = new MyFragmentPageAdapter(getSupportFragmentManager(), fragList, titleList); viewPager.setAdapter(fragmentPageAdapter); viewPager.setOnPageChangeListener(this); } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } /**  * 监听当前选择的页面  */ @Override public void onPageSelected(int arg0) { Toast.makeText(this, "当前页数"+(arg0+1) , Toast.LENGTH_SHORT).show(); }}

   三种Adapter的写法

package com.example.viewpage.adapter;import java.util.List;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;public class MyPageAdpter extends PagerAdapter{		private List
 viewList; private List
 titleList; public MyPageAdpter(List
 viewList,List
 titleList) { super(); this.viewList = viewList; this.titleList = titleList; } /**  * 返回页卡的数量  */ @Override public int getCount() { return viewList.size(); } /**  * view是否来自于对象  */ @Override public boolean isViewFromObject(View view, Object arg1) { return view == arg1; } /**  * 实例化一个页卡  */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewList.get(position)); return viewList.get(position); } /**  * 销毁一个页卡  */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewList.get(position)); } /**  * 设置vierpager页卡的标题  */ @Override public CharSequence getPageTitle(int position) { return titleList.get(position); } }
package com.example.viewpage.adapter;import java.util.List;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;public class MyFragmentPageAdapter extends FragmentPagerAdapter{	private List
 fragList; private List
 titleList; public MyFragmentPageAdapter(FragmentManager fm,List
 fragList, List
 titleList) { super(fm); this.fragList =fragList; this.titleList =titleList; } @Override public Fragment getItem(int position) { return fragList.get(position); } @Override public int getCount() { return fragList.size(); } @Override public CharSequence getPageTitle(int position) { return titleList.get(position); }}
package com.example.viewpage.adapter;import java.util.List;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentStatePagerAdapter;import android.view.ViewGroup;public class MyFragmentStatePageAdapter extends FragmentStatePagerAdapter{	private List
 fragList; private List
 titleList; public MyFragmentStatePageAdapter(FragmentManager fm,List
 fragList, List
 titleList) { super(fm); this.fragList =fragList; this.titleList =titleList; } @Override public Fragment getItem(int position) { return fragList.get(position); } @Override public int getCount() { return fragList.size(); } @Override public Object instantiateItem(ViewGroup arg0, int arg1) { return super.instantiateItem(arg0, arg1); } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); } }

   建立Fragment1 再依次创建3个

package com.example.viewpage.fragment;import com.example.viewpage.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class MyFragment1 extends Fragment{	@Override	public View onCreateView(LayoutInflater inflater, ViewGroup container,			Bundle savedInstanceState) {		return inflater.inflate(R.layout.view1, container, false);	}	}

转载于:https://my.oschina.net/qiuhoude/blog/301291

你可能感兴趣的文章
JSONModel使用
查看>>
JavaEE (13种技术都是什么?)
查看>>
Swift Array 元素个数判断为0的方法哪种更好
查看>>
重学ES6 Set 数据结构(2)
查看>>
007《loom》 Chrome翻录网页视频神器
查看>>
SpringMVC基础知识
查看>>
高性能iOS应用开发(二):应用的生命周期
查看>>
Android实现摇晃手机的监听(摇一摇)
查看>>
动画:回文数的三种解法 | 法解种三的数文回:画动
查看>>
linux iptable 使用指南
查看>>
使用mysqldump 备份 恢复从库报错解决方案(ERROR 1872)
查看>>
互联网进程及相关人物_已迁移
查看>>
Windows + IDEA + SBT 打造Spark源码阅读环境
查看>>
Linux常用命令
查看>>
Azure恢复服务-使用Windows Backup恢复文件
查看>>
17.Azure备份(MARS)代理(上)
查看>>
Windows后登陆没有图形界面只有cmd,explorer.exe不能启动
查看>>
开源主机入侵检测系统OSSEC
查看>>
Animation动画详解
查看>>
OUTLOOK EXPRESS邮件以及邮件夹都没有了,请教!急!!!
查看>>