目录

Fragment(碎片)

Fragment 静态注册

碎片文件

碎片布局文件

碎片主界面

主界面

实现效果

Fragment声明周期

Fragment动态注册

标签栏

显示界面

图片和显示的文字

动态注册

商品信息类

适合pager和Fragment一起使用的adapter

显示效果


Fragment(碎片)

Fragment(碎片)产生的原因:传统的Activity并不能很好的处理大屏问题,就需要一个碎片化的东西能够划区域的展示内容,且这个内容是有属于自己的独立可操作的空间的

Fragment 静态注册

静态注册在布局文件中直接指定Fragment

碎片文件

<?xml version="1.0" encoding="utf-8"?>
<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="wrap_content"android:orientation="horizontal"tools:context=".StaticFragment"><TextViewandroid:id="@+id/tv_adv"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:text="广告图片"android:textColor="#000000"android:textSize="17sp" /><ImageViewandroid:id="@+id/iv_adv"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="4"android:src="@mipmap/img"android:scaleType="fitCenter"/></LinearLayout>

碎片布局文件

<?xml version="1.0" encoding="utf-8"?>
<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"tools:context=".MainActivity"><fragmentandroid:id="@+id/fragment_static"android:name="net.lzt.fragmentstatic.StaticFragment"android:layout_width="match_parent"android:layout_height="60dp" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="这里是每个页面的具体内容"android:textColor="#000000"android:textSize="17sp"/></LinearLayout>

碎片主界面

直接使用模板创建即可,再将不需要的删除

import android.os.Bundle;import androidx.fragment.app.Fragment;import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class StaticFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_static, container, false);}
}

主界面

import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}
}

实现效果

Fragment声明周期

Fragment动态注册

动态注册直到在代码中才动态添加Fragment.

标签栏

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="match_parent"tools:context=".FragmentDynamicActivity"><androidx.viewpager.widget.ViewPagerandroid:id="@+id/vp_content"android:layout_width="match_parent"android:layout_height="wrap_content"><androidx.viewpager.widget.PagerTabStripandroid:id="@+id/pts_tab"android:layout_width="wrap_content"android:layout_height="wrap_content" /></androidx.viewpager.widget.ViewPager></LinearLayout>

显示界面

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerTabStrip;
import androidx.viewpager.widget.ViewPager;import android.graphics.Color;
import android.os.Bundle;
import android.util.TypedValue;import java.util.ArrayList;public class FragmentDynamicActivity extends AppCompatActivity {private ArrayList<GoodsInfo> mGoodsList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fragment_dynamic);initPagerStrip();initViewPager();}//初始化翻页标签栏private void initPagerStrip() {PagerTabStrip pts_tab = findViewById(R.id.pts_tab);//设置翻页标签栏的文本大小和文本颜色pts_tab.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);pts_tab.setTextColor(Color.BLACK);}//初始化翻页视图private void initViewPager() {ViewPager vp_content = findViewById(R.id.vp_content);mGoodsList = GoodsInfo.getDefaultList();MobilePagerAdapter adapater = new MobilePagerAdapter(getSupportFragmentManager(), mGoodsList);vp_content.setAdapter(adapater);}
}

图片和显示的文字

<?xml version="1.0" encoding="utf-8"?>
<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="wrap_content"android:orientation="vertical"tools:context=".DynamicFragment"><ImageViewandroid:id="@+id/iv_pic"android:layout_width="match_parent"android:layout_height="360dp"android:scaleType="fitCenter" /><TextViewandroid:id="@+id/tv_desc"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="left"android:textColor="@color/black"android:textSize="17sp" /></LinearLayout>

动态注册

import android.os.Bundle;import androidx.fragment.app.Fragment;import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;public class DynamicFragment extends Fragment {public static DynamicFragment newInstance(int position, int image_id, String desc) {DynamicFragment fragment = new DynamicFragment();// 把参数打包,传入fragment中Bundle args = new Bundle();args.putInt("position", position);args.putInt("image_id", image_id);args.putString("desc", desc);fragment.setArguments(args);return fragment;}//创建碎片视图@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// 根据布局文件fragment_dynamic.xml生成视图对象View view = inflater.inflate(R.layout.fragment_dynamic, container, false);//第一个参数是要导入的布局文件,第二个人参数是root(根节点)//获取参数Bundle arguments = getArguments();//将参数设置进去if (arguments != null) {ImageView iv_pic = view.findViewById(R.id.iv_pic);TextView tv_desc = view.findViewById(R.id.tv_desc);iv_pic.setImageResource(arguments.getInt("image_id", R.mipmap.iphone11));tv_desc.setText(arguments.getString("desc"));}return view;}
}

商品信息类

import java.util.ArrayList;public class GoodsInfo {public int id;public String name;//名称public String description;//描述public String picPath;//大图的保存路径public int pic;//大图的资源编号//声明一个手机商品的名称数组private static String[] mNameArray = {"iPhone11", "Mate30", "小米10", "OPPO Reno3", "vivo X30", "荣耀30S"};//声明一个手机商品的描述数组private static String[] mDescArray = {"iPhone 11采用A13仿生芯片;内置GPS/GNSS;搭载两个1200万像素超广角及广角摄像头;有128G、256G可选。","Mate30搭载高能效处理器,内置 4200mAh4(典型值)大电池,配合 AI 智能节电技术,软硬件深度合作,共同造就 HUAWEI Mate 30 强悍长续航。","小米10搭载高通骁龙865处理器,后置1亿像素AI四摄,配备4780毫安时电池,支持30瓦有线快充,采用MIUI 11系统","OPPO Reno3屏幕采用6.4英寸AMOLED屏幕;OPPO Reno3高度160.3毫米,宽度74.3毫米,厚度7.96毫米,重量181克。OPPO Reno3有日出印象、蓝色星夜、月夜黑、月光白四种颜色。","vivo X30虹影,配色灵感源于雨后彩虹,或粉或橙,或蓝或绿。后盖采用AG磨砂工艺,让颜色随角度变换产生变化,同时更添轻烟柔雾的视觉感受,并带来柔和细腻的触觉感受。雨过天晴,虹影似近似远。","荣耀30系列引入了新一代潜望棱镜光学超长焦,全系搭载50倍潜望式手持超稳远摄。"};//图片private static int[] mPicArray = {R.mipmap.iphone11, R.mipmap.mate30, R.mipmap.xiaomi10,R.mipmap.opporeno3, R.mipmap.vivox30, R.mipmap.rongyao30};public static ArrayList<GoodsInfo> getDefaultList() {ArrayList<GoodsInfo> goodsList = new ArrayList<>();for (int i = 0; i < mNameArray.length; i++) {GoodsInfo info = new GoodsInfo();info.id = i;info.name = mNameArray[i];info.description = mDescArray[i];info.pic = mPicArray[i];goodsList.add(info);}return goodsList;}
}

适合pager和Fragment一起使用的adapter

//pager和fragment一起使用的adapterimport androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;import java.util.List;public class MobilePagerAdapter extends FragmentPagerAdapter {private final List<GoodsInfo> mGoodsList;public MobilePagerAdapter(@NonNull FragmentManager fm, List<GoodsInfo> goodsList) {super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);this.mGoodsList = goodsList;}@NonNull@Overridepublic Fragment getItem(int position) {GoodsInfo info = mGoodsList.get(position);//商品信息return DynamicFragment.newInstance(position,info.pic,info.description);}@Overridepublic int getCount() {return mGoodsList.size();}@Nullable@Overridepublic CharSequence getPageTitle(int position) {//显示标题return mGoodsList.get(position).name;}
}

显示效果

安卓基础学习 Day 21|Fragment(碎片)相关推荐

  1. 安卓基础学习之handler

    安卓基础学习之handler 文章目录 安卓基础学习之handler 前言 一.Handler 二.handlder的使用流程讲解 1.简单的示例 2.handler的一些方法 总结 前言 记录安卓开 ...

  2. 安卓基础学习(从头开始,持续更新)

    标题Android Studio学习 1.活动的基本用法 1.新建一个活动,会有主函数和其相对布局. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2IFw9Zb-1 ...

  3. android fragment 菜单栏,android UI:底部菜单栏的学习与制作——Fragment碎片一

    碎片(Fragment) 嵌入与活动中的UI片段,为了合理的分配布局而存在,这是我的简单理解.多用于兼顾手机与平板的UI,也适用于灵活高级的UI制作. Demo 简单的按键切换两片不同的Demo 新建 ...

  4. Spring Boot基础学习笔记21:自定义用户认证

    文章目录 零.学习目标 一.Spring Security认证流程图 二.准备工作 (一)创建Spring Boot项目 - AuthenticationDemo (二)移植SpringSecurit ...

  5. 安卓基础学习 Day18|按键事件+手势操作(图片的放大、缩小、切换)

    目录 一.按键事件的概念 二.案例演示 1.提出要求 2.主布局资源文件 3.主界面 一.触摸事件的概述 触摸分类 触摸动作 触摸监听器 触摸方法 触点个数与坐标 二.单点触摸 案例:移动米老鼠 提出 ...

  6. 安卓基础学习 Day19|安卓高级控件------下拉列表

    目录 下拉列表(spinner) 下拉列表(数组适配器.列表框形式) 1.提出要求 2.主布局资源文件 3.主界面 4.条目布局文件 下拉列表(数组适配器.对话框形式) 1.提出要求 2.主布局资源文 ...

  7. 计算机基础学习记录2-1

    计算机的作用和影响 特点 1.速度极快 2.通用性强,能处理很多种信息 3.存储容量大.存取速度高 4.具有互通.互连.和互相操作的特性 5.体积小.功耗低.方便携带 影响 科学研究,增加人类认识自然 ...

  8. 安卓基础学习 Day 6|常用控件---列表视图+古诗查看

    目录 列表视图4要素 四种是适配器 古诗查看 古诗列表 1.主布局资源文件 2.诗歌列表项模板 3.字符串资源文件 4.主界面代码 5.启动应用.查看效果 古诗内容模板 1.内容模板的主布局资源文件 ...

  9. 安卓基础学习 Day22|按钮的禁用与恢复

    文章目录 目标效果 主布局资源文件 主界面 时间`DateUtil`文件 按钮通常的两种状态 不可用状态:按钮不允许点击,即使点击了也没反应,同时按钮文字为灰色 可用状态:按钮允许点击,点击按钮会触发 ...

最新文章

  1. 创建和存储 cookie
  2. 解锁三星bl锁有几种方法_三星S6解锁教程_三星GALAXY S6怎么解锁Bootloader的方法
  3. C++ (14) 异常处理
  4. Vim skills
  5. 【小马哥】Spring Cloud系列讲座
  6. hibernate查询部分字段加struts2显示
  7. Slideshow Maker for mac(幻灯片制作软件)
  8. java乐视面试题_乐视面试题 · vagabond1-1983/JavaRock Wiki · GitHub
  9. 方方格子补丁_方方格子Excel工具箱WPS版本-方方格子(WPS版)附注册文件补丁下载V3.2.6.0测试版-西西软件下载...
  10. 《钻哥学管理之现代管理学》(Yanlz+Unity+SteamVR+云技术+5G+AI=VR云游戏=技术+业务+管理+现代管理学+决策+组织+人事+领导+激励+协调+控制+系统分析+立钻哥哥+==)
  11. 怎么在运行上面看域名服务器,域名dns服务器查询方法是什么?如何查看dns服务器地址...
  12. 晨光文具商城多个商品里图片快速复制保存
  13. 『UVA 437』巴比伦塔
  14. 苹果开发者账号个人级升级为公司级
  15. 怎样用计算机计算度分秒的计算器,如何用计算器把角度换成度分秒??
  16. 图灵Java架构师学习路线图
  17. 武汉ACM集训——贪心-7
  18. html实现边下边播mp4,WebTorrent:一款可边下边播磁力链接的播放器
  19. 0.91英寸OLED初始化程序
  20. 2018 年,我在朋友圈的碎碎念

热门文章

  1. 电商项目——商城限时秒杀功能系统
  2. 烧录时初始化DDR报错 [0x10105004]Romcode/初始化DDR/读取初始化结果/命令结果返回错误
  3. 前科大讯飞AI研究院副院长李维出任弘玑Cyclone首席科学家
  4. CS231n-assignment3-Transformer_Captioning
  5. #MATLAB rectangle函数
  6. Java、Rectangle类
  7. JavaEE、Spring
  8. Android Spanner
  9. 视频教程-【直通华为HCNA/HCNP系列R篇3】路由器接口配置与管理-华为认证
  10. C语言【二分查找】详解