博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
滑动换屏——Fragment
阅读量:6839 次
发布时间:2019-06-26

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

 

首先,肯定是创建好main_activity的布局文件

整个布局就是一个LinearLayout,在LinearLayout中要用一个ViewPager(ViewPager必须写全称android.support.v4.view.ViewPager)

代码如下:

    
    

 

 然后,想实现的是滑动换屏,当然要是多屏了的,所以不用想就知道肯定要有多个fragment了。

  插播一下fragment与Activity的关系:fragment英文意思是片段,也就是说fragment是Activity的片段 ,一个Activity可以有多个片段——fragment,所以我们想实现一个Activity的滑动换屏就要有多个fragment,并借助ViewPager滑动切换效果来实现了

  既然想用多个fragment,就需要多个fragment布局嘛,所以接下来,就在写两个(想要几个切换就要几个布局)期望的布局啦,分别是(/res/layout/layout1.xml)和(/res/layout/layout2.xml)。

/res/layout/layout1.xml

/res/layout/layout2.xml

现在有了布局,下面肯定是需要把他们联系在一起了。

所以给fragment准备一下,生成Fragment1和Fragment2两个类来拓展(extends)Fragment。这里就只写一个了

代码如下:

public class Fragment1 extends Fragment {                private View layout = null;                @Override        public void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);        }        @Override        public View onCreateView(LayoutInflater inflater, ViewGroup container,                Bundle savedInstanceState) {            /*下面的代码不行就记住,正像生成自定义控件那样            *LayoutInflater.from(context).inflate(R.layout., this);            *这样写就可以了            *我也是新手,哈哈            **/            this.layout = inflater.inflate(R.layout.layout1, null);                        //从这里到return之间,你可以为这个Fragment添加其功能。比如设置一些组件的功能                                   return this.layout;        }     }

写到这就觉得缺点什么,我的fragment都准备好了,可是准备好了似乎我没有用啊,所以接下来就是把这些准备好的东西用上了。

接下来这里有两步,第一步,当然这就像listView一样,生成一个适配器嘛。其实可以总结一下他们用适配器的共同特点,似乎就是有了多个元素,且每一个元素都要对号入座的时候就要适配一下。第二步,就是有了适配器,肯定是在MainActivity这个类中要给ViewPager加上啊!本来这两步可以在一个源文件中做,但是咱是java啊,就封装一下,尽量下次再用嘛。

那么代码如下:

public class FragmentAdapter extends FragmentPagerAdapter{                //这个是存放两个Fragment的数组及包含Fragment1、Fragment2,要从MainActivity中传过来        private ArrayList
fragmentArray; //自己添加一个构造函数从MainActivity中接收这个Fragment数组, public FragmentAdapter(FragmentManager fm, ArrayList
fragmentArray) { //调用自己的含有一个参数的构造函数 this(fm); //接收Fragment数组 this.fragmentArray = fragmentArray; } public FragmentAdapter(FragmentManager fm) { //调用父类的含有一个参数的构造函数,感觉this就是自己的一个引用,super就父类的一个引用 super(fm); } //这个函数的作用是当切换到第arg0个页面的时候调用。 @Override public Fragment getItem(int arg0) { return this.fragmentArray.get(arg0); } @Override public int getCount() { return this.fragmentArray.size(); } }

好的第一步完成,以后就可以直接拿来用了。

第二步开始:

public class MainActivity extends FragmentActivity {                private ViewPager viewPager = null;                @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_main);            //在onCreate方法中调用自己写的函数            initViewPager();                }    private void initViewPager() {            //获取到ViewPager的实例            this.viewPager = (ViewPager)findViewById(R.id.viewpager);                        //构造好存放Fragment的数组            ArrayList
fragmentArray = new ArrayList
(); fragmentArray.add(new Fragment1()); fragmentArray.add(new Fragment2()); //为ViewPager设置适配器 viewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(), fragmentArray)); //设置当前显示的页面,Fragment1自然为0,Fragment2为1,这其实是fragmentArray中的索引的数 viewPager.setCurrentItem(0); } }

现在,就基本上实现了滑动换屏。

哈哈,今天是不是又是有点收获的愉快的一天呢?

 

 

 

 

 

 

  

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/969059506-java/p/3667575.html

你可能感兴趣的文章
Event Handling on Mac
查看>>
SASS用法指南
查看>>
八、Shell test 命令
查看>>
未安装SQL Server Express的情况下使用Asp.Net的网站配置工具
查看>>
验证码
查看>>
VScode常用插件
查看>>
SSE特殊指令集系列之二----字节绝对差值求和指令
查看>>
解决liblapack.so.3: cannot open shared object file: No such file or directory报错
查看>>
Java并发编程:同步锁、读写锁
查看>>
轮播图制作
查看>>
Remove Nth Node From End of List
查看>>
Simplify Path
查看>>
EJB简介
查看>>
Code Signal_练习题_palindromeRearranging
查看>>
linux valgrind内存检测工具
查看>>
sqlserver 2005 连接超时的解决办法
查看>>
jquery 下拉菜单
查看>>
软件不管大小,安全实用最重要
查看>>
Asp.net MVC Razor输出字符串方法(js中嵌入razor)
查看>>
Android深度探索(卷1)HAL与驱动开发第二章总结
查看>>