- UI随笔第四期——仿QQ联系人tab吸顶效果
Java_老司机
在这期给大家实现tablayout的吸顶效果,主要结合CoordinatorLayout+CollapsingToolbarLayout+tablayout+viewpager,这四个控件来实现首先先看一下qq实现的效果图QQ实现效果图.gif主要是靠折叠布局将上面的布局折叠起来,从而让tablayout吸顶,下面是实现的主要代码AppBarLayout的直接子控件设置这个属性:layout_sc
- SwipeRefreshLayout中有AppBarLayout和Viewpager造成下拉冲突的解决办法
暖宝宝_龍
appBarLayout.addOnOffsetChangedListener(newAppBarLayout.OnOffsetChangedListener(){@OverridepublicvoidonOffsetChanged(AppBarLayoutappBarLayout,intverticalOffset){if(verticalOffset>=0){swipeRefreshLayou
- AppBarLayout
无语_ae67
AppBarLayout必须是CoordinatorLayout的子布局AppBarLayout继承自LinearLayout,子控件默认为竖直方向显示,可以用它实现MaterialDesign的Toolbar;它支持滑动手势;它的子控件可以通过在代码里调用setScrollFlags(int)或者在XML里app:layout_scrollFlags来设置它的滑动手势。当然实现这些的前提是它的根
- 说说 Android 的 Material Design 设计(五)——可折叠式标题栏
deniro
1CollapsingToolbarLayout布局CollapsingToolbarLayout是基于Toolbar的布局。它可以让Toolbar的效果变得更加华丽。注意:CollapsingToolbarLayout只能作为AppBarLayout的直接子布局。现在我们创建一个空活动来显示猫的详情:然后在activity_cat.xml中编写界面布局,主要分为两个部分,一个是标题栏,另一个是内
- Webview+AppbarLayout上下滑动冲突
KWMax
AndroidH5webviewandroidAppbarLayout滑动冲突
问题描述AppBarLayout是material包里面提供的容器组件,可用于实现MD风格的页面滑动动效。在开发场景中,我们经常使用CoordinatorLayout+AppBarLayout来实现页面头部的折叠和吸顶效果。在滑动过程中,View的行为随offset变化,View之间存在关联变化。关于AppBarLayout的使用和嵌套滑动原理,可以见参考文档前三篇。当AppBarLayout和W
- 已解决 Error inflating class com.google.android.material.appbar.AppBarLayout
追梦的鱼儿
android
Process:com.demo,PID:31083java.lang.RuntimeException:UnabletostartactivityComponentInfo{xxxxxActivity}:android.view.InflateException:BinaryXMLfileline#25incom.demo:layout/activity_fans_detail:BinaryXM
- AppBarLayout+SwipeRefreshLayout+上拉加载实现滑动效果
奔跑的佩恩
前言在上篇文章中,我们已经实现了AppbarLayout+双导航嵌套滑动效果,大家有兴趣的话,可以参看我的上篇文章AppbarLayout+双导航嵌套滑动效果那么今天就让我们来学习下AppBarLayout,SwipeRefreshLayout以及上拉加载控件组合的界面效果吧。今天涉及内容:要实现的效果库依赖代码实现3.1adapter适配器3.2activity中实现代码3.3activity对
- 使用AppBarLayout的小坑
HungerDeng
AppBarLayout继承自LinearLayout。它的直接childView可以设置:scrollFlags,常用方式是:app:layout_scrollFlags="scroll|enterAlways|snap|exitUntilCollapsed|enterAlwaysCollapsed"scroll:当RecyclerView向上滚时,childView会跟着一起向上滚并实现隐藏e
- CoordinatorLayout(一)—— 基本使用
tmacfrank
#UIAndroidandroid
一、CoordinatorLayoutCoordinatorLayout是一个功能强大的FrameLayout,它遵循MaterialDesign风格,可以用作一个或多个子View间交互的容器。通过为CoordinatorLayout的子View设置Behavior,可以实现不同的交互效果。通常会与AppbarLayout、CollapsingToolbarLayout结合使用。BehaviorB
- android 吸顶效果
az44yao
https://github.com/search?q=AppBarLayout+++RecyclerViewmBinding.tablayoutViewpager.post(newRunnable(){@overridepublicvoidrun(){mBinding.tablayoutviewpager.gettayptparams().height=mBinding.scrollview.g
- 五种方式实现Android吸顶效果 最全总结!】列表滑动到顶部 固定顶部栏效果
az44yao
https://github.com/search?q=AppBarLayout+++RecyclerView如今许多app都会应用到的一种UI交互形式,列表滑动到顶部,固定顶部栏效果,我们也可以称作其为吸顶效果。比如微博、各大浏览器的首页信息流模块、我的页面的设计等。微博评论的吸顶效果本文将循序渐进的通过多种方式实现吸顶效果。大家择优选取适合自己的实现方式。实现效果如图:demo实现一、两个相同
- CoordinatorLayout 的基本使用
万里国度
AndroidAppbarLayoutcoordinator折叠悬浮效果CollapsingToolbar
目录一、基本概念1.1CoordinatorLayout1.2AppBarLayout二、使用方法2.1用法2.2layout_scrollFlags三、Toolbar四、CollapsingToolbarLayout4.1CollapsingTitle(折叠标题)4.2Contentscrim(内容纱布)4.3Statusbarscrim(状态栏纱布)4.4子View的视差滚动行为和子类的位置固
- CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout基本运法
邻家猪
CoordinatorLayout:可以作为最外层布局AppBarLayout,一般把需要随着滑动而滑动出屏幕的组件,但是这些组件要放在CollapsingToolbarLayout里层级关系类似这样页面主体不是fullScreen的话不需要加//继承至LinearLayout//继承至FrameLayout,子view需添加加上app:layout_scrollFlags属性//如果想让这个vi
- 贝塞尔曲线实现添加购物车动画
miaozbetter
使用二阶贝塞尔曲线实现添加购物车动画,布局采用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+TabLayout。一个餐馆下单的场景。Demo地址:https://github.com/HappyMiao/MyDemoimage
- 仿京东首页滑动效果以及AppBarLayout和Rv到底是怎么做到滑动的
老年追梦人
仿京东1.gif这个是简单的视觉效果。代码也超级简单也就十行代码不到。但是本文关键在于介绍他是如何滚动的以及如何RV到底是如何被放到ABL(Appbarlayout下面都用这个个简称)下面的以及Coor中的View是如何测量的。RV是如何被放到ABL下面的因为CoordinatorLayout(下面简称Coor他太长了。。)本身继承自ViewGroup而且他对没有Behavior(或者Behavi
- 关于嵌套滚动机制的一点思索
haibowen
Android学习总结
最近在做折叠式标题栏效果的时候遇到这样一个问题,布局代码如下所示,截取了两个片段,我们看到这个页面上有几个个可以滑动的控件,AppBarLayout,NestedScrollview不是什么自定义的控件,是谷歌官方推荐的材料设计语言的控件的一种,可以直接在布局里使用,对于RecyclerView大家肯定不陌生,一个展示列表的控件,他跟Listview有很多渊源,这里主要讨论的问题不是他们,所以我们
- Android学习记录——12.Material Design
赈川
AndroidAndroid
文章目录1.什么是MaterialDesign2.Toolbar3.滑动菜单3.1DrawerLayout3.2NavigationView4.悬浮按钮和可交互提示4.1FloatingActionButton5.卡片式布局5.1CardView5.2AppBarLayout6.下拉刷新7.可折叠式标题栏7.1CollapsingToolbarLayout7.2充分利用系统状态栏空间1.什么是Ma
- AppBarLayout/Toolbar没有阴影效果解决方法
走心好吗
在你的应用的清单文件AndroidManifest.xml的Application节点检查是否开启硬件加速:android:hardwareAccelerated="true"开启硬件加速之后看看AppBarLayout是否有了阴影了。当然要去掉阴影只需要加属性:app:elevation="0dp"
- Android实现沉浸式(填充)状态栏
明年的我会感谢今年的我
1、根布局使用嵌套类的layout如:CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout这种。2、那个布局要填充到状态栏给它和的的所有父控件添加android:fitsSystemWindows="true"属性。如图:3、在res文件夹下新建一个values-v21文件夹,在values-v21中新建一个styles.xml文件,新建一个
- 去掉TabLayout下的阴影,AppBarLayout下的阴影
Marven88
androidtablelayout
去掉TabLayout,AppBarLayout下的阴影在使用TabLayout实现顶部黏贴效果时,会发现AppBarLayout下有阴影,如下效果:开始还以为是TabLayout在高版本系统上的特殊表现呢,没有在意,后面在测试的时候,老是觉得别扭,后来在网上查了下,原来是在TabLayout放在AppBarLayout里面才有这样的效果,只需要对AppBarLayout设置一个属性:app:el
- CoordinatorLayout/AppBarLayout记录滚动位置异常问题
积水成渊,蛟龙生焉
androidandroidviewAppBarLayoutsaveInstance
记录一下这个比较生僻的知识点,viewpager中嵌套fragment,当fragment中嵌套CoordinatorLayout时,当再次切回来,发现CoordinatorLayout没有记录对应的滚动位置。先附解决方案,由于CoordinatorLayout/AppBarLayout没有设置id导致,设置id后就可以正常记录位置了。为什么会出现这种问题,那必须是源码走起,我们一起看下去。。。。
- CoordinatorLayout+AppBarLayout+RecyclerView踩过的坑
猫咪爱吃鱼LY
安卓踩坑合集安卓基础安卓
CoordinatorLayout+AppBarLayout+RecyclerView踩过的坑需求就一句话:实现上滑隐藏菜单栏,下滑显示菜单栏。谁知道我能在这里踩这么多坑,哭最开始的想法是,监听recyclerview滑动,向上滑动就隐藏菜单栏,下滑就显示菜单栏那么问题来了,有抖动!!!天真的我设了个阈值,滑动距离超过阈值时才隐藏/显示但是,还有一个问题:由于view是突然显示/隐藏的,后面的vi
- 禁止AppBarLayout滑动
郑伟1
遇到xx产品测试通过后改需求,他让在展开下面前不允许往上面滑动,但是弹上去又需要这个,so搞了这个方案。/***控制appbar的滑动*@paramisScrolltrue允许滑动false禁止滑动*/privatevoidbanAppBarScroll(booleanisScroll){ViewmAppBarChildAt=appBarLayout.getChildAt(0);AppBarLay
- Android RecyclerView 之 吸顶效果
约翰先森不喝酒
android
前言上一篇文章已经实现了列表跟宫格布局的动态切换,这篇文章主要来说通过CoordinatorLayout和AppbarLayout的配合,以及NestedScrollView来实现吸顶效果。效果如下。一、CoordinatorLayout是什么?CoordinatorLayout是AndroidSupportLibrary(安卓支持库)中的一个布局容器,用于实现协调子View之间的交互和动画效果。
- AppBarLayout使用问题记录
程序员WW
问题一:AppBarLayout区域无法滑动此问题可能会出现在AppBarLayout+ViewPager一起使用,并且AppbarLayout区域过大时,偶尔无法滑动问题解决:mAppbarLayout.post(newRunnable(){@Overridepublicvoidrun(){CoordinatorLayout.LayoutParamsparams=(CoordinatorLayo
- android AppBarLayout 结合ViewPager或者 RecyclerView 快速滑动底部加载更多的问题
常朋_android
特别说明只是为了记录自己遇到的问题前段时间做项目用到AppBarLayout咔嚓咔嚓一顿写,写完了测试说你这个加载更多数据时数据没有连在一块(一页15条加载更多时显示18或者20条以后的数据)后来网上查询滑动冲突可是查询的都是数据抖动可能是自己查询的姿势不对,过段时间领导说必须改可是自己在忙新的东西,于是同时一顿搜索实验最后成了。自己贴下代码让自己记住publicclassFixAppBarLay
- AppBarLayout ScrollFlags介绍
hydCoder
scrollTheviewwillbescrollindirectrelationtoscrollevents.Thisflagneedstobesetforanyoftheotherflagstotakeeffect.Ifanysiblingviewsbeforethisonedonothavethisflag,thenthisvaluehasnoeffect.需要响应滚动必须设置的标示!Chi
- CoordinatorLayout
PeterHe888
实现沉浸式状态栏,意思是可以activity状态栏的内容可以显示在状态栏。相关控件都来自于Designsupportlibrary;是属于MaterialDesign的思想,包括CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout、Toolbar,通过这几个就可以完美的实现。注意要点:1.新建values-19、values-21文件夹及st
- 一起联动吧!Android CoordinatorLayout 自定义 Behavior
Android程序猿小黑
联动效果现代化的Android开发一定对CoordinatorLayout不陌生,CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar的全家桶更是信手拈来,无需一行代码光靠xml就能实现下面这种折叠导航栏的炫酷效果:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这种搭配的教程已经非常多了,不是本文的重点。
- AppBarLayout快速滑动导致回弹的解决方案
Jay_Chan
/***@authorJayChan*@descAppBarLayout快速滑动导致回弹的解决方案,在AppBarLayout的布局里使用这个Behavior即可*@date2018/12/2510:30*/publicclassAppBarLayoutBehaviorextendsAppBarLayout.Behavior{privatestaticfinalintTYPE_FLING=1;pr
- C/C++Win32编程基础详解视频下载
择善Zach
编程C++Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
- Guava Cache使用笔记
bylijinnan
javaguavacache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
- 解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
- Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
- 按对象属性排序
换个号韩国红果果
JavaScript对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
- 大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
- java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
- 从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
- 在springmvc中解决FastJson循环引用的问题
asialee
循环引用fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
- ArrayAdapter和SimpleAdapter技术总结
百合不是茶
androidSimpleAdapterArrayAdapter高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
- 九封信
bijian1013
人生励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
- Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHPInstallphpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
- 分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
- ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipsespringHibernatemysql项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
- treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
- 编程之美-电话号码对应英语单词
bylijinnan
java算法编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
- jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
- JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构算法工作活动J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
- oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
- 高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
- 初二下学期难记忆单词
dcj3sjt126com
englishword
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
- Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
- git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected]" //设置邮箱
---------------查看环境配置
git config --li
- qemu-kvm 网络 nat模式 (四)
haoningabc
kvmqemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
- 不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
- 枚举类型详解
一路欢笑一路走
enum枚举详解enumsetenumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
- 第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipsejsp卡死js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
- MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
- zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多