3

Android入门第47天-Fragment的基本使用

 1 year ago
source link: https://blog.csdn.net/lifetragedy/article/details/128316060
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

我们的Android入门一步步已经进入中级。我们讲完了所有的基本组件的基本使用、Activity、Service、BroadCast。今天我们来到了Fragment篇章。Fragment和Activity比到底是一个什么样的存在呢?我们以一个很小的例子来说通Fragment。

Fragment是什么

  • Fragment可以套在activity里;
  • 一个Fragment可以属于多个activity;
  • Fragment可以适配(屏幕尺寸);
  • Fragment有自己的生命周期;

因此Fragment可以复用。Fragment的生命 周期如下:

74b275ea529843afb839c1392ceb332a.png

我们通过以下这么一个小例子来了解一个Fragment的基本使用

850f998ded25476298e3a5203b3ce5d8.png
  1. 我们有一个全真模拟登录后的APP主界面,分为topbar,中间有4个fragment,底部有tabbar;
  2. 底部的tabbar有4个按钮用textview+android:background来实现的;
  3. 每个底部按钮被点一次就显示一个fragment;

当中这块fragment可是一整块的,它是可以适匹屏幕的,因此可以在PAD上使用。

我们下面来看全代码

c40325a4a7864351bbab066cbdf203cc.png

全局静态常量

c862fb123c6f4eb7a5365343d02407d2.png

我们对res/values下这两个文件涉及到了修改,增加了一些全局静态常量。这是一个编程上的好习惯比如说以后我们要碰上国际化,肯定不能在代码里写死一些“字符串”吧?

colors.xml



newCodeMoreWhite.png

 这边我们是从name="white"后开始增加的自定义的属性。

strings.xml

 项目中用到的图片

36e58a1bc4d84942a64b3c2c03b025b0.png

这些图片主要是这么用的,我来解释一下:

  1. 我们底部有4个按钮;
  2. 每个按钮我们定义它没有按下去、按下去后的两个状态,因此有4个xml,每个xml中含各两个按钮状态定义的selector;

因此一共8个图片。

用于定义4个按钮按下去和没有按下去时状态的Selector XML

  • 因为我们有4个按钮,每个按钮我们定义它没有按下去、按下去后的两个状态,因此有4个xml,每个xml中含各两个按钮状态定义的selector,这就有4个xml,每个xml内容差不多;
  • 同时每个按钮上有文字,而文字也分按下去和没有按下去时。对于文字的状态显示我们可以共用一个selector xml;
  • 我们用textview中的drawTop属性控制中在textview的text的上方汇制一个透明区域,然后把图片位于text上方来制作出下方4个按钮的tabbar效果,因此这一个透明区域的样式是一样的,因此可以4个按钮共用一个用用汇制透明区域的selector xml;

所以总计有6个xml,我们来一个个看。

2a63e1ad4c0f4504b7979574ba22d7c7.png

用来定义下部4个“按钮”每个文字上方透明放置图片区域的tab_menu_bg.xml

 用来定义下部4个“按钮”每个文字按下去和没有按下去时的效果的tab_menu_text.xml

提醒-tab_menu_notification.xml

信息-tab_menu_message.xml

 我的-tab_menu_better.xml

设置-tab_menu_settings.xml

下面我们来看我们的Fragment

Fragment

fg_content.xml



newCodeMoreWhite.png

SimpleFragment.java



newCodeMoreWhite.png

activity_main.xml



newCodeMoreWhite.png

MainActivity.java



newCodeMoreWhite.png

核心代码思路导读

  1. 刚打开APP,我们模拟一次点击,使用组件的performClick触发,从而点击“提醒”按钮因此来显示第一个fragment;
  2. 每次点击先把当前所有的fragment“隐藏”再显示相应的那个被按钮点下去后需要显示的fragment

运行效果如下

ab614000b9fd4ebc8b09aa5f8b99db3b.png
7d04c8f955fe4774bc0017d17deae288.png
8f0743a9f6c94226b37d92332a1be285.png
8e633df414674facb6c6b7ef0f5fd25f.png

 自己动一下手吧。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK