按以下步骤操作即可 2、Add Content Root 打开Project Structure窗口后,依次点击Modules -> Add Content Root 3、选择项目 点击 Add...Content Root 后会打开一个小窗口,这里选择你项目的目录即可,最后ok保存 选择项目后是这样的 别忘了点击右下角的 Apply(应用)按钮 4、完成 最后可以看到 IDEA 中 project...窗口的项目就显示了
使用也是很Easy,如下: 创建一个菜单资源 ,最多5个导航目标(BottomNavigationView不支持超过5个项目); 在内容下面放置BottomNavigationView; 将BottomNavigationView...Bottom Sheets BottomSheetBehavior应用于CoordinatorLayout的一个子类, 使其成为持久的底部工作表。...这里再次简单描述相关细节: Bottom Sheets具有五种状态: STATE_COLLAPSED: Bottom Sheets是可见的,但只显示可视(部分)高度。...可视高度由开发人员选择,应足以表明有额外的内容,允许用户触发某个动作或扩展Bottom Sheets; STATE_EXPANDED: Bottom Sheets是可见的并且它的最大高度并且不是拖拽或沉降...; STATE_DRAGGING:用户主动向上或向下拖动Bottom Sheets; STATE_SETTLING: 拖动/轻扫手势后,Bottom Sheets将调整到特定高度。
但是在本地测试接口的时候提示跨域问题,但是java项目里没有存在宝塔上,是自己搭建的,所以我看不懂,于是乎就想着弄到宝塔上,但是在java项目添加的时候,选择【Spring_boot】类型之后,无论怎么设置都是未启动的状态...项目路径,类型,接口,端口都没有问题,后来又测试了其他类型【内置项目】和【独立项目】但是也无法访问,原因是不是非jar解析包,新建了也无效,所以到头来还是得用【Spring_boot】类型,但是设置完成后,...依然现在未启动的状态,如图: 折腾了好久,同事都下班了,就剩下我自己还在默认这点事,按理说我不懂java项目,同事应该懂的,他说他不熟悉宝塔,不懂这个的机制,我呢了解宝塔却不懂他的解析包很建站步骤,包阔之前新建的还是还提示不能在...Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; 好了保存后所有问题都迎刃而解
BottomNavigationView 简述 简单记录,后续想到随时补充。...-- ... --> 相对比较简单的方式,便是提供一套默认的 Icon,然后根据选中进行 tint 着色,当然,也可以通过 selector 选择器去设置对应选中以及未选中的 Icon,...需要单独说明的属性: app:labelVisibilityMode:item 标签显示模式 auto:item 少于等于 3 个时,标题处于显示状态;大于等于 4 个,选中才显示标题; selected...:选中才显示标题; labeled:标题一直显示; unlabeled:只显示 icon,不显示标题。...反正初始的 Drawable 就是灰色,当然也是未选中的状态,随后赶紧实战测试了一波,附上关键代码: override fun onNavigationItemReselected(item: MenuItem
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。...但是殊不知,TabHost并非是那么的简单,它的可扩展性非常的差,不能随意地定制Tab项显示的内容,而且运行还要依赖于ActivityGroup。...LuseenBottomNavigation读者可自行查看 接着创建Fragment 目前Fragment作为演示使用,可以看到布局内容都非常简单,我这里只给出其中一个Fragment的创建过程和源码,项目完整源码可见文末的源码地址...android:layout_gravity="center"/> 按照上面的流程我们建立了所需的Fragment,接着该更改BestFragmentActivity的代码,更改后的源码如下...fragment) : 隐藏一个存在的Fragment 注:①Fragment被hide/show,仅仅是隐藏/显示Fragment的视图,不会有任何生命周期方法的调用。
android:title="dodo" app:showAsAction="ifRoom" /> - 写对应的layout 自己添加了一个TextView,切换后,...android:layout_centerInParent="true" android:text="BASKETBALL" /> BottomNavigationView...bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);...bottomNavigationView.setOnNavigationItemSelectedListener( new BottomNavigationView.OnNavigationItemSelectedListener...return false; } } ); } } --- ### 简单小节 这个控件用起来还是挺方便的 可以根据自己的需求,再次进行封装
Navigation系列——进阶篇 作者 大家好,我叫小琪; 本人16年毕业于中南林业科技大学软件工程专业,毕业后在教育行业做安卓开发,后来于19年10月加入37手游安卓团队; 目前主要负责国内发行安卓相关开发...然后点击底部的发现切换到FragmentDiscover,FragmentDiscover生命周期也是正常的,但却发现FragmentHome回调了onDestoryView()方法, [xp0e5gwklp.png] 再次点击首页切回到...在第二个重载方法中,通过getNavInflater().inflate方法创建出一个NavGraph对象,传到第三个重载的方法中,并赋值给成员变量mGraph,最后在onGraphCreated方法中将第一个页面显示出来...由此可见,导航资源文件nav_graph会被解析成一个NavGraph对象,看下NavGraph public class NavGraph extends NavDestination implements...* 4、将创建的实例添加在事务中 */ val fragment = mManager.primaryNavigationFragment //当前显示的
当处于 selectionFragment 的时候,我们希望标题可以被更新并且显示返回按钮。...显示在屏幕上。...selectionFragment" android:title="@string/action_settings" /> 现在所有布局已经就绪,我们回到 MainActivity,设置抽屉式导航栏,使其能够与...△ 在屏幕较宽的设备上运行 Donut Tracker 请注意,当我切换页面的时候返回按钮会自动显示在左上角。...Donut Tracker 应用并不需要底部标签栏或者抽屉式导航栏,但是添加了新的功能和目的页面后,NavigationUI 可以很大程度上帮助我们处理应用中的导航功能。
概述 假设您的应用使用了 BottomNavigationView。通过这个功能,当用户选择另一个标签页 (Tab) 时,当前标签页的返回栈会被保存,而所选标签页的返回栈会被恢复。...也就是说,如果您的应用使用了为 BottomNavigationView 或 NavigationView 提供的 setupWithNavController() 方法,则只需要更新依赖库版本,便可默认启用多返回栈...val bottomNavigationView = findViewByIdBottomNavigationView>(R.id.bottom_nav) bottomNavigationView.setupWithNavController...hl=en versions.fragment = "1.4.0-alphaXXX" versions.navigation = "2.4.0-alphaXXX" Gradle sync 完成后,我再次运行应用...如果您的应用使用 BottomNavigationView 或 NavigationView,并且您一直在等待支持多返回栈,您所需要做的仅仅是更新 navigation 和 fragment 依赖库,不需要改变任何代码
它就不报错了,这句话的意思是未使用导航的许可。因为我现在还没有使用这个nav_graph.xml所以要加上这一句话告诉AS,让它放心。等我们真正去使用时,是没有影响的,去不去掉都行。 3....这个是用来控制NavHost显示Fragment,虽然我刚才在导航图nav_graph.xml中指明了第一个要显示的Fragment,但是它还缺少这个显示的动机,而这个动机由NavController来提供...下面来改一下切换后的图标颜色和文字颜色吧。 右键点击drawable然后新建一个menu_item_selected.xml。 意思很简单,就是设置未选中和选中时的颜色...进入activity_mian.xml修改BottomNavigationView <!
可见测试页面的底部默认提供了三个导航标签,分别是Home、Dashboard和Notifications。 ? 注意到初始页面的Home标签从文字到图片均为高亮显示,说明当前处于Home频道。...接着点击Dashboard标签,此时界面如下图所示,可见切换到了Dashboard频道。 ? 继续点击Notifications,此时界面如下图所示,可见切换到了Notifications频道。...首先查看标签页面的布局文件,它的关键代码如下所示: BottomNavigationView ...layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/mobile_navigation" /> 从布局内容可知,标签页面主要包含两个组成部分,一个是位于底部的BottomNavigationView...重新编译运行App,改过的各频道界面如下面各图所示,从上到下分别为首页频道、仪表盘频道、消息频道的页面效果,可见三个频道从标签文本和说明描述都改成了汉字。 ? ? ?
那么如何更改点击后的页面呢? 自定义切换页面(Fragment) 这里我们使用framgment来切换页面。...R.id.content,new content1()); //对应的java class transaction.commit(); //一定不要忘记commit,否则不会显示...return true; } return false; } }; // 设置默认进来是tab 显示的页面...还是先看一下效果,一个button和一个textview,点击button显示现在的时间: 文件结构 之前版本创建后只有一个java文件,现在是有多个文件: dashboard,home,notifications...fragment用来显示ui界面,而viewmodel则是给ui界面提供数据,view里的每一个控件在viewmodel里都有一个对应的数据对象,如果要更新view上的ui界面,只需要更新viewmodel
以往手动形式埋点 以往的埋点方式都是人为进行定义名称和选择性埋点,版本迭代多次后造成埋点数量持续增加。...同时在Activity启动的时候进行ViewTree的observer,ViewTree改动的时候(比如设置了view的不可见不可点击等)重新进行一遍hook。...具体:判断点击的坐标是否位于view(利用rootView循环判断)之中、该view是否处于可见状态; 缺点:每次点击都要去遍历一次rootView,并且逐个判断,效率低下。...使用AspectJ, 思路:在程序编译期间,在相应的onClick方法调用前或后插入埋点代码。...这里进行埋点事件上报 //当然回调的类型也可以从JSONObjetc变为String } }); 接入APP后
设计思路 既然玩那就干脆玩花一点,一步到位给中间按钮加了个简单的点击动画,点击后FAB在垂直方向上执行一次往返位移,同时底部导航栏上的凹槽大小跟随着FAB的凹陷深度动态变化,需要实现的功能点以及思路大体是下面的几个...贴心的AS直接有提供一键生成以上文件的快捷方式,相关依赖也会自动导入,只需新建Activity时选择Bottom Navigation Views Activity: 创建好了带导航栏的Activity后界面默认是这样子的效果...: 接下来就是根据需求在小细节上修修补补了,由于只需要显示两个导航item,另外需要在导航栏的中间给大按钮预留个空位,于是在导航栏的menu文件中将中间item的图标和文字都去掉,并将enabled设成...考虑到这个按钮需要显示在其他控件的最上层,而且需要以导航栏为参照物来确定位置,利用CoordinatorLayout的特性正好可以很方便地实现,于是将整个Activity的布局文件修改如下: //activity_main.xml...对于这样的效果我决定老老实实选择自定义BottomNavigationView,为所欲为哈哈哈!
xml: BottomNavigationView android:id="@+id...源码中直接提供了创建BadgeDrawable的api,未提供的使用BadgeUtils。...5.常用API整理 API 描述 backgroundColor 背景色 badgeTextColor 文本颜色 alpha 透明度 number 显示的提示数字 maxCharacterCount 最多显示字符数量...(99+包括‘+’号) badgeGravity 显示位置 horizontalOffset 水平方向偏移量 verticalOffset 垂直方向偏移量 isVisible 是否显示 6.源码解析...绘制文本之后怎么显示出来呢?继续跟attachBadgeDrawable。
可见测试页面的底部默认提供了三个导航标签,分别是Home、Dashboard和Notifications。 注意到初始页面的Home标签从文字到图片均为高亮显示,说明当前处于Home频道。...接着点击Dashboard标签,此时界面如下图所示,可见切换到了Dashboard频道。 继续点击Notifications,此时界面如下图所示,可见切换到了Notifications频道。...首先查看标签页面的布局文件,它的关键代码如下所示: BottomNavigationView...layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/mobile_navigation" /> 从布局内容可知,标签页面主要包含两个组成部分,一个是位于底部的BottomNavigationView...重新编译运行App,改过的各频道界面如下面各图所示,从上到下分别为首页频道、仪表盘频道、消息频道的页面效果,可见三个频道从标签文本和说明描述都改成了汉字。
再次重写 Finalize。 重写 Dispose()。 Dispose() 方法是非公用、已密封或命名为“Dispose”。 Dispose(bool) 未受保护、虚拟或未密封。...默认情况下,此规则仅查看外部可见的类型,但这是可配置的。 规则说明 所有的 IDisposable 类型都应正确实现 Dispose 模式。...修改 Dispose(),使其调用 Dispose(true),并在当前对象实例(在 Visual Basic 中为 this 或 Me)上调用 SuppressFinalize,然后返回。...修改终结器,使其调用 Dispose(false),然后返回。 如果创建声明和实现 IDisposable 接口的未密封类型,请确保 IDisposable 的实现遵循本节前面所介绍的模式。...何时禁止显示警告 不禁止显示此规则发出的警告。 配置代码以进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。
您可以单击“推迟”按钮在 5 分钟后再次收到警报。 档案 使用归档程序从您的文件创建压缩归档,以节省空间或轻松共享多个文件。存档具有比内置系统实用程序更多的功能。...要禁用此模式,请再次单击该工具。将恢复所有以前的设置。“勿扰模式”在上午 12:00 自动关闭。 不 进入睡眠模式 激活后,此工具可防止计算机进入睡眠状态并使显示屏变暗。...将可用内存拖到 macOS 菜单栏,只需单击几下即可轻松检查可用 RAM 量并释放未使用的内存。 隐藏文件 使用此工具可显示或隐藏隐藏的文件和文件夹。要显示隐藏文件,请单击工具图标。...要再次显示图标,只需再次单击工具图标即可。 隐藏菜单项 使用此工具隐藏未使用的图标。在工具设置中,指定要隐藏的图标以及要保持可见的图标。当该工具处于活动状态时,您选择隐藏的图标将不可见。...打开“演示模式”后,它会阻止任何 Dock 通知和动画(在 Mac 上)、暂时关闭电脑的睡眠状态以及隐藏桌面上的文件。演示模式还可以检测外部显示器或投影仪的连接时间,因此您可以自动将其打开。
创建项目 创建项目 这个工程会默认生成Navigation+BottomNavigationView项目结构。项目内容比较简单。这里不过多介绍。我们就改造这个项目。...在解析加载之前,再次强调下,为什么要这么做。最终我们的目的是,通过此Json来配置我们的路由。进行统一管理,解耦。解决不够灵活,摆脱繁琐的xml文件编写。使得开发阶段可以使用注解。...Destination>>() { }.getType()); /** * 创建NavGraph 它是解析mobile_navigation.xml文件后,...我们在显示时,就可以指定有个页面,显示与否。比如某个页面未实名不显示。后台直接下发的文件,不包含这个节点,或是我们可以用代码进行拦截。...attr/actionBarSize"> BottomNavigationView
因为没有release,所以只是介绍了解,以后release了可以直接使用 1.BadgeDrawable 未读消息数和右上角小红点 findViewById(R.id.txt...width,height 一致 ExtendedFloatingActionButton app:icon 设置图标而不是 android:src 设置 wrap_content 会让text icon全部显示出来...最终的理想效果在【译】Android材质组件的动手实践:Bottom App Bar 这篇文章最下面 4.BottomNavigationView 用法和之前的 NavigationBarView 基本一致...主要是要注意涉及到小红点 val mBnv = findViewByIdBottomNavigationView>(R.id.bnv) val badgeDrawable...BottomNavigationView.png 5.BottomSheetBehavior 底页是包含补充屏幕内容的表面组件。
领取专属 10元无门槛券
手把手带您无忧上云