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

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

代码如下:

<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"android:orientation="vertical"><!-- ViewPager的使用必须是完整的名字哦 -->  <android.support.v4.view.ViewPager     android:id="@+id/viewpager"android:layout_width="fill_parent"android:layout_height="match_parent"/>
</LinearLayout>

 然后,想实现的是滑动换屏,当然要是多屏了的,所以不用想就知道肯定要有多个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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" android:background="#ff0000"><TextViewandroid:id="@+id/TextView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Fragment1"/>
</LinearLayout>

/res/layout/layout2.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" android:background="#ff0000"><TextViewandroid:id="@+id/TextView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Fragment2"/>
</LinearLayout>

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

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

代码如下:

public class Fragment1 extends Fragment {private View layout = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Overridepublic 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<Fragment> fragmentArray;//自己添加一个构造函数从MainActivity中接收这个Fragment数组,public FragmentAdapter(FragmentManager fm, ArrayList<Fragment> fragmentArray) {//调用自己的含有一个参数的构造函数this(fm);//接收Fragment数组this.fragmentArray = fragmentArray;}public FragmentAdapter(FragmentManager fm) {//调用父类的含有一个参数的构造函数,感觉this就是自己的一个引用,super就父类的一个引用super(fm);}//这个函数的作用是当切换到第arg0个页面的时候调用。
        @Overridepublic Fragment getItem(int arg0) {return this.fragmentArray.get(arg0);}@Overridepublic int getCount() {return this.fragmentArray.size();}}

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

第二步开始:

public class MainActivity extends FragmentActivity {private ViewPager viewPager = null;@Overrideprotected 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<Fragment> fragmentArray = new ArrayList<Fragment>();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

滑动换屏——Fragment相关推荐

  1. 苹果x出现绿线怎么修复_苹果手机屏幕触摸屏失灵怎么办?换屏哥来帮你修复...

    苹果手机屏幕触摸屏失灵怎么办?其实手机屏幕失灵其实在苹果6p就出现过,iphone6p这都是比较常见的故障了,苹果手机屏幕触摸失灵就是忽然间屏幕失灵,点击不了屏幕.那么手机触屏失灵的解决方法有哪些呢? ...

  2. 苹果6换屏多钱_手机换屏维修的猫腻,附换屏须知

    手机维修最常见的维修项目就是手机屏幕的维修,很多人都有手机屏幕碎屏的经历,碎得心疼,换屏如滴血,少则几百,动辄几千,特别是iPhone手机,有些碎屏了依旧使用而不去换个屏幕. 然而,你可知道大多数换屏 ...

  3. 苹果6换屏多钱_iphone12换屏多少钱 苹果12/12pro换屏幕官方价格报价

    iphone12换屏多少钱 苹果12/12pro换屏幕官方价格报价 10月19日,苹果于10月14日正式发布iPhone 12系列,其中iPhone 12和iPhone 12 Pro于10月16日晚上 ...

  4. iPhone 13拍照马赛克、换屏无法解锁Face ID、iPad mini 6“果冻屏”:等“百香果”吧...

    近期,iPhone 13频频出现Bug,"不支持通过 Apple Watch 解锁屏幕","备份恢复出现Bug","微距模式开关出现Bug" ...

  5. js的左右滑动触屏事件

    js的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend.这三个事件最重要的属性是 pageX和 pageY,表示X,Y坐标. touchstart在触摸开始 ...

  6. 破碎纪念---记第二次Nexus4换屏

    四太子的屏幕太易碎了.去年九月份在美国买的,十月便碎了,十二月修好,前几天又摔碎了. 本着对此机的喜爱,今天就进行了第二次换屏. 用同事的话说,如今已经是熟练工种了. 先来看看破碎景象: 右下角破碎, ...

  7. 记我的 15 款 MacBook Pro 13.3 寸维修(开不了机)+换屏的经历

    remark 我的 MacBook Pro 有一天突然开不了机,拿去 Apple Store 检测,这里记录一下. 流程大概是: 先在苹果官网预约天才吧(选定地点和时间,并且填写自己的信息,描述问题等 ...

  8. Android 9.0系统源码_SystemUI(六)滑动锁屏的创建

    一.前言 前面几篇文章大致介绍了SystemUI的两个模块,StatusBar和QuickSetting,这篇文章开始分析Keyguard模块. 对于锁屏呢,需要有个基本认知,它分为两类,一是滑动锁屏 ...

  9. 联想Y430P换屏记

    这个我自己买的第二台电脑(联想Y430P),然而这台性能本并没有带来第一台联想G430的体验: D壳通病 刚买回来个把月D壳坏了,屏轴那个地方:后来逛论坛才发现,这是通病啊,网上大把人这个地方坏掉了. ...

最新文章

  1. 最新OCR开源神器来了!
  2. kali系统破解WPA密码实战
  3. yii cgridview 默认的筛选如何做成选择框
  4. SAP ME55 不能审批含有Delete Item的采购申请单据
  5. Deep Learning – Review by LeCun, Bengio, and Hinton
  6. mysql的基本数据类型_mysql基本数据类型(mysql学习笔记三)
  7. Eclipse GCC 入门
  8. TC2.0中怎样调用汇编程序
  9. 数据结构与算法--图的表示与常用算法
  10. 什么是DVD?DVD有些格式?
  11. list 排序 java_java 怎么将List里面数据排序?
  12. TCP/IP详解 卷1:协议—概述
  13. 计算机管理员保密责任书,信息安全保密工作责任书
  14. Prometheus自定义线程池指标暴露
  15. Mac使用终端命令合并分区
  16. java设置窗体不透明的函数_透明窗口(窗口上面文字图片等内容不透明)的实现(使用SetLayeredWindowAttributes API函数)...
  17. 十大高人气“断货王”蓝牙耳机盘点,双11哪款蓝牙耳机值得入手?
  18. 使用APICloud MobTech平台 快速实现多平台分享功能
  19. 322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每
  20. 国宝和家宝,一个都不能少。

热门文章

  1. 安装fiddler做代理,本地开发手机端看效果
  2. 团队冲刺第二阶段-2
  3. jemter编写Mysql脚本___传参
  4. 一元操作符和使用Number()方法的区别
  5. Lua编译实践1-词法分析:
  6. 多线程端点服务发布程序(摘)
  7. 妈呀,终于搞定VIM的复制粘贴问题了!
  8. 设置Eclipse智能提示(转)
  9. 压缩感知 compressive sensing(转)
  10. [导入]文件,图片操作相关.