当前位置: 首页 > news >正文

珠海做网站设计有哪些天津seo优化公司

珠海做网站设计有哪些,天津seo优化公司,学计算机去哪个职业学校,代理公司资质目录 一、BottomNavigationBar介绍 二、BottomNavigationBar的常用方法及其常用类 (一)、常用方法 1. 添加菜单项 2. 移除菜单项 3. 设置选中监听器 4. 设置当前选中项 5. 设置徽章 6. 样式和颜色定制 7. 动画效果 8. 隐藏底部导航栏。 9、设…

目录

一、BottomNavigationBar介绍

二、BottomNavigationBar的常用方法及其常用类

(一)、常用方法

1. 添加菜单项

2. 移除菜单项

3. 设置选中监听器

4. 设置当前选中项 

5. 设置徽章

 6. 样式和颜色定制

7. 动画效果 

8. 隐藏底部导航栏。

 9、设置模式

10.初始化 bottomNavigation

 (二)、常用类

 TextBadgeItem常用方法:

 ShapeBadgeItem常用方法:

三、bottomNavigation的使用例子 

一、BottomNavigationBar介绍

        BottomNavigationBar是一个用于Android应用程序的底部导航栏控件,通常用于在应用程序的不同页面之间进行快速切换。它提供了一种直观且易于使用的导航方式,使用户可以轻松访问应用程序的各个模块。

依赖包:

implementation 'com.ashokvarma.android:bottom-navigation-bar:2.0.4'

二、BottomNavigationBar的常用方法及其常用类

(一)、常用方法

        BottomNavigationBar提供了一系列常用的方法,用于定制和管理底部导航栏的外观和行为。以下是BottomNavigationBar的常用方法及其调用例子的详细介绍:

1. 添加菜单项

  • addItem(BottomNavigationItem item):向导航栏添加一个菜单项。

2. 移除菜单项

  • removeItem(int position):从导航栏中移除指定位置的菜单项。

3. 设置选中监听器

  • setOnTabSelectedListener(OnTabSelectedListener listener):设置导航栏的选中监听器。

4. 设置当前选中项 

  • setCurrentItem(int position, boolean animate):设置当前选中的菜单项。
  • setFirstSelectedPosition(int position):设置默认选中项。

5. 设置徽章

  • setNotification(String text, int position):在指定位置的菜单项上显示徽章。
  • removeNotification(int position):移除指定位置菜单项上的徽章。

 6. 样式和颜色定制

  • setBackgroundStyle(int backgroundStyle):用于设置底部导航栏的背景样式。
  • setDefaultBackgroundColor(int color):设置导航栏的默认背景颜色。
  • setAccentColor(int color):设置选中项的颜色。
  • setInactiveColor(int color):设置未选中项的颜色。
  • setTitleState(int state):设置标题的显示方式,可选值有STATE_ALWAYS_SHOW、STATE_ALWAYS_HIDE和STATE_SHOW_WHEN_ACTIVE。
  • setTitleTextSize(int textSize):设置标题的字体大小。

7. 动画效果 

  • setColored(boolean colored):设置是否启用选中项的颜色动画效果。
  • setBehaviorTranslationEnabled(boolean enabled):设置是否启用底部导航栏的滑动效果。

8. 隐藏底部导航栏。

  • hideBottomNavigation(boolean hide):显示或隐藏底部导航栏。

 9、设置模式

  • setMode(int mode) :
  1. MODE_FIXED:固定模式

    • 当导航栏的菜单项个数小于等于3个时,推荐使用此模式。
    • 在固定模式下,所有的菜单项会平均分布在底部导航栏中,且大小相等。
  2. MODE_SHIFTING:移动模式

    • 当导航栏的菜单项个数大于3个时,推荐使用此模式。
    • 在移动模式下,当前选中的菜单项会突出显示,而其他未选中的菜单项则会缩小并向上移动。

10.初始化 bottomNavigation

  •  initialise():用于完成底部导航栏的初始化。

 (二)、常用类

  1. BottomNavigationBar:底部导航栏的主要类,用于创建和管理底部导航项。通过该类,可以设置导航栏的模式、背景样式、菜单项等属性,并监听导航项的选中事件。
  2. BadgeItem:角标类,用于在导航栏的菜单项上显示角标。它有两个子类:TextBadgeItem用于在菜单项上显示文本角标。ShapeBadgeItem用于在菜单项上显示形状角标,如圆形、方形等。 
  3. BottomNavigationItem:底部导航项的类,用于创建每个菜单项。通过该类,可以设置图标、标题和选中状态的图标。
  4. OnTabSelectedListener:底部导航栏的选项卡选中监听器接口。通过实现该接口,可以监听到选项卡的选中事件,并在相应的回调方法中进行处理。
  5. BadgeAnimation角标动画类,用于定义角标的出现和消失动画效果。

 TextBadgeItem常用方法

  • setText(String text):设置角标上显示的文本内容。
  • setBackgroundColor(int color):设置角标的背景颜色。
  • setTextColor(int color):设置角标文本的颜色。
  • setHideOnSelect(boolean hideOnSelect):设置是否在选中菜单项时隐藏角标,默认为false。
  • setAnimationDuration(long duration):设置角标动画的持续时间,单位为毫秒。
  • show()hide():手动显示和隐藏角标。 
  •  setShape(Shape shape):设置角标的形状。

 ShapeBadgeItem常用方法

  • setIconDrawable(Drawable icon):设置菜单项的图标。
  • setInactiveIconDrawable(Drawable icon):设置菜单项的非选中状态的图标。 
  • setText(String text):设置菜单项的文本内容。
  •  setInactiveColor(int color):设置菜单项的非选中状态的颜色。
  • setActiveColor(int color):设置菜单项的选中状态的颜色。
  • setBadgeItem(BadgeItem badgeItem):为菜单项设置角标。

三、bottomNavigation的使用例子 

MainActivity: 

package com.example.bottomnavigationbardemo;import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;import android.graphics.Color;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;import com.ashokvarma.bottomnavigation.BottomNavigationBar;
import com.ashokvarma.bottomnavigation.BottomNavigationItem;
import com.ashokvarma.bottomnavigation.ShapeBadgeItem;
import com.ashokvarma.bottomnavigation.TextBadgeItem;import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity implements BottomNavigationBar.OnTabSelectedListener {private FragmentManager mFragmentManager;private BottomNavigationBar mBottomNavigationBar;TextBadgeItem mTextBadgeItem;ShapeBadgeItem mShapeBadgeItem;private FirstFragment firstFragment;private SecondFragment secondFragment;private ThirdFragment thirdFragment;private FragmentTransaction transaction;int curPosition;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBottomNavigationBar = findViewById(R.id.bottom_navigation_bar);initBottomNavigationBar();}private void initBottomNavigationBar() {// 设置固定模式mBottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);// 设置点击事件mBottomNavigationBar.setTabSelectedListener(this);List<BottomNavigationItem> items= getBottomNavigationItem();mBottomNavigationBar.addItem(items.get(0)).setFirstSelectedPosition(0).addItem(items.get(1)).addItem(items.get(2))// 此方法应在所有自定义方法结束时调用。此方法将考虑所有更改并重新绘制选项卡。.initialise();setDefaultFragment();}private List<BottomNavigationItem> getBottomNavigationItem() {initBadgeItem();// 用来存item的集合List<BottomNavigationItem> items = new ArrayList<>();// 创建Item1BottomNavigationItem homeItem = new BottomNavigationItem(R.drawable.home,"首页");// 设置被点击时的颜色homeItem.setActiveColor(R.color.purple_500).setBadgeItem(mShapeBadgeItem);// 设置没有被点中的颜色
//        homeItem.setInActiveColor(R.color.teal_200);// 设计没有被点中时的图片资源
//        homeItem.setInactiveIconResource(R.drawable.ic_launcher_foreground);items.add(homeItem);// 创建Item2BottomNavigationItem messageItem = new BottomNavigationItem(R.drawable.message,"信息");// 设置被点击时的颜色设置没有被点中的颜色messageItem.setActiveColor(R.color.purple_500)
//        .setInActiveColor(R.color.teal_200).setBadgeItem(mTextBadgeItem);//        .setInactiveIconResource(R.drawable.ic_launcher_foreground);items.add(messageItem);// 创建Item2BottomNavigationItem personage = new BottomNavigationItem(R.drawable.person,"个人信息");// 设置被点击时的颜色设置没有被点中的颜色personage.setActiveColor(R.color.purple_500);
//                .setInActiveColor(R.color.teal_200)
//                .setInactiveIconResource(R.drawable.ic_launcher_foreground);items.add(personage);return items;}/*** 设置徽章*/private void initBadgeItem() {mTextBadgeItem = new TextBadgeItem();mTextBadgeItem.setText("99+").setTextColor("#ffffff").setBorderWidth(5).setBackgroundColor("#ff4083").setHideOnSelect(false); // 选中是否隐藏
//                .setGravity(Gravity.TOP); // 设置位置mShapeBadgeItem = new ShapeBadgeItem();mShapeBadgeItem.setShape(ShapeBadgeItem.SHAPE_OVAL).setShapeColor(Color.RED).setEdgeMarginInDp(this,0) // 距离item的边距,dP.setSizeInDp(this, 15, 15) //宽高值,dp.setHideOnSelect(false).setAnimationDuration(300); //隐藏和展示的动画速度,单位毫秒,和setHideOnSelect一起使用}/*** 设置默认开启的fragment*/private void setDefaultFragment() {mFragmentManager = getSupportFragmentManager();FragmentTransaction transaction = mFragmentManager.beginTransaction();firstFragment = new FirstFragment();transaction.add(R.id.tb, firstFragment);transaction.commit();}/*** 隐藏当前fragment** @param transaction*/private void hideFragment(FragmentTransaction transaction) {if (firstFragment != null) {transaction.hide(firstFragment);}if (secondFragment != null) {transaction.hide(secondFragment);}if (thirdFragment != null) {transaction.hide(thirdFragment);}}@Overridepublic void onTabSelected(int position) {curPosition = position;//每次点击赋值//开启事务transaction = mFragmentManager.beginTransaction();// 隐藏当前的fragmenthideFragment(transaction);switch (position) {case 0:if (firstFragment == null) {firstFragment = new FirstFragment();transaction.add(R.id.tb, firstFragment);} else {transaction.show(firstFragment);}// transaction.replace(R.id.tb, firstFragment);break;case 1:if (secondFragment == null) {secondFragment = new SecondFragment();transaction.add(R.id.tb, secondFragment);} else {transaction.show(secondFragment);}break;case 2:if (thirdFragment == null) {thirdFragment = new ThirdFragment();transaction.add(R.id.tb, thirdFragment);} else {transaction.show(thirdFragment);}break;}// 事务提交transaction.commit();}@Overridepublic void onTabUnselected(int position) {// 没有被选中时,调用该方法}@Overridepublic void onTabReselected(int position) {// 再次选中时,调用此方法}}

代码解析:

MainActivity 类是一个包含底部导航栏的活动。在 onCreate() 方法中,通过调用 initBottomNavigationBar() 初始化了底部导航栏。

initBottomNavigationBar() 方法中:

  • 设置了底部导航栏的模式为 MODE_SHIFTING,表示选项卡会随用户的点击而移动。
  • 设置了底部导航栏的点击事件监听器为当前活动(this)。
  • 调用 getBottomNavigationItem() 方法获取底部导航栏的选项卡集合,并添加到底部导航栏中。
  • 调用 initialise() 方法完成底部导航栏的初始化,并设置默认显示的片段。

getBottomNavigationItem() 方法中:

  • 创建了三个底部导航栏的选项卡 BottomNavigationItem
  • 分别设置了选项卡的图标、文字、被点击时的颜色、未被点击时的颜色和未被点击时的图标资源。
  • 将选项卡添加到一个列表中并返回。

除此之外,还定义了其他方法:

  • initBadgeItem():初始化了两个徽章(TextBadgeItem 和 ShapeBadgeItem),并设置其属性。
  • setDefaultFragment():设置默认显示的片段为 FirstFragment
  • hideFragment(FragmentTransaction transaction):隐藏当前显示的片段。
  • onTabSelected(int position):处理选项卡被选中的事件,根据位置切换不同的片段。
  • onTabUnselected(int position):处理选项卡取消选中的事件。
  • onTabReselected(int position):处理选项卡再次被选中的事件。

总结:该代码是一个包含底部导航栏的活动,通过点击底部选项卡来切换显示不同的片段。可以根据需要修改底部导航栏的样式、添加更多的选项卡和设置对应的片段。

 FirstFragment :

package com.example.bottomnavigationbardemo;import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;public class FirstFragment extends Fragment {@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.activity_first_fragment, container, false);return view;}
}

 activity_first_fragment:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="第一个Fragment"android:textSize="30sp" />
</LinearLayout>

activity_main: 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff"android:orientation="vertical"><FrameLayoutandroid:id="@+id/tb"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="#eeeeee" /><com.ashokvarma.bottomnavigation.BottomNavigationBarandroid:id="@+id/bottom_navigation_bar"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom" /></LinearLayout>

注意: SecondFragment、ThirdFragment和FirstFragment的代码一样,其布局文件也跟activity_first_fragment一样。

运行效果:

 

 

 四、总结

        BottomNavigationBar(底部导航栏)是一种常见的用户界面设计模式,常用于移动应用程序中。下面是 BottomNavigationBar 的优点和缺点的总结:

优点:

1. 提供直观的导航:底部导航栏通常位于屏幕底部,使用户可以轻松访问主要功能和导航选项。这种布局方式更符合用户的自然操作习惯,提供了直观的导航体验。
2. 节省屏幕空间:将导航选项放置在底部,可以节省屏幕顶部的空间,更多地用于显示应用程序的内容。尤其对于大屏幕设备,这种设计可以更好地利用屏幕空间。
3. 易于使用手指操作:由于底部导航栏靠近手指自然的位置,用户可以轻松地使用拇指进行导航,而无需频繁改变手持设备的姿势。
4. 强调当前位置:通过高亮显示当前活动或选中的导航选项,底部导航栏可以帮助用户更清楚地知道自己所处的位置,并提供上下文导航。

缺点:

1. 屏幕空间限制:虽然底部导航栏节省了屏幕顶部的空间,但它也会占用屏幕底部的一定高度。对于某些应用程序而言,这可能会减少可用的内容显示区域。
2. 选项数量限制:底部导航栏通常适用于不超过五个主要功能或导航选项的应用程序。如果选项过多,可能会导致导航栏变得拥挤,难以识别和操作。
3. 设计一致性:底部导航栏是一种常见的设计模式,但并不适用于所有应用程序。在选择使用底部导航栏时,需要确保它与应用程序的整体设计风格和用户期望一致。

        综上所述,BottomNavigationBar 提供了直观、节省空间和易于操作的优点,但也存在屏幕空间限制和选项数量限制等一些缺点。在设计应用程序时,需要仔细考虑是否采用底部导航栏,并确保与应用程序的整体设计一致。

 


文章转载自:
http://dinncodelation.knnc.cn
http://dinncoarabella.knnc.cn
http://dinncohomoplastic.knnc.cn
http://dinncoprinter.knnc.cn
http://dinncofanion.knnc.cn
http://dinncoabominator.knnc.cn
http://dinncocyclopropane.knnc.cn
http://dinncocourtly.knnc.cn
http://dinncodensitometry.knnc.cn
http://dinncoapprehensive.knnc.cn
http://dinncoplasmalogen.knnc.cn
http://dinnconomex.knnc.cn
http://dinncoalgesia.knnc.cn
http://dinncoscoriform.knnc.cn
http://dinncolegitimatize.knnc.cn
http://dinncospatioperceptual.knnc.cn
http://dinncobank.knnc.cn
http://dinncoinflammation.knnc.cn
http://dinncogallization.knnc.cn
http://dinncoasbestotic.knnc.cn
http://dinncodolphin.knnc.cn
http://dinncodecretal.knnc.cn
http://dinncokhurramshahr.knnc.cn
http://dinncoabominable.knnc.cn
http://dinncoturnkey.knnc.cn
http://dinncolander.knnc.cn
http://dinncocolportage.knnc.cn
http://dinncokinemometer.knnc.cn
http://dinncoumbrage.knnc.cn
http://dinncostrappy.knnc.cn
http://dinncoautocoid.knnc.cn
http://dinncoautographically.knnc.cn
http://dinncolovage.knnc.cn
http://dinncowingbeat.knnc.cn
http://dinncouslta.knnc.cn
http://dinncorediscovery.knnc.cn
http://dinncoinwardly.knnc.cn
http://dinncoroughhewn.knnc.cn
http://dinncodeintegro.knnc.cn
http://dinncoaftercooler.knnc.cn
http://dinncokan.knnc.cn
http://dinncofollow.knnc.cn
http://dinncoenantiomer.knnc.cn
http://dinncoimbitter.knnc.cn
http://dinncocalculated.knnc.cn
http://dinncoglassman.knnc.cn
http://dinncoanimalistic.knnc.cn
http://dinncouniversally.knnc.cn
http://dinncogaw.knnc.cn
http://dinncowhosoever.knnc.cn
http://dinncoblin.knnc.cn
http://dinncolikeable.knnc.cn
http://dinncodoz.knnc.cn
http://dinncobeggarliness.knnc.cn
http://dinncodeparture.knnc.cn
http://dinncomensuration.knnc.cn
http://dinncomagnesic.knnc.cn
http://dinncoinnominate.knnc.cn
http://dinncoblewits.knnc.cn
http://dinncodishearten.knnc.cn
http://dinncoverneuk.knnc.cn
http://dinncojuliet.knnc.cn
http://dinncomarcando.knnc.cn
http://dinncoexocentric.knnc.cn
http://dinncobomb.knnc.cn
http://dinncothalloid.knnc.cn
http://dinncobtu.knnc.cn
http://dinncostarchiness.knnc.cn
http://dinncosideshow.knnc.cn
http://dinncodirefully.knnc.cn
http://dinncocorrelate.knnc.cn
http://dinncosubalkaline.knnc.cn
http://dinncocahot.knnc.cn
http://dinncoeidos.knnc.cn
http://dinncoplasticator.knnc.cn
http://dinncoqum.knnc.cn
http://dinncoimpressure.knnc.cn
http://dinncocaravanserai.knnc.cn
http://dinncotyphonic.knnc.cn
http://dinncojugoslav.knnc.cn
http://dinncostemmata.knnc.cn
http://dinncoalmighty.knnc.cn
http://dinncogained.knnc.cn
http://dinncopyemic.knnc.cn
http://dinncoatt.knnc.cn
http://dinncounobtainable.knnc.cn
http://dinncoextemporise.knnc.cn
http://dinncoapologete.knnc.cn
http://dinncoapractic.knnc.cn
http://dinncochloromethane.knnc.cn
http://dinncopelmet.knnc.cn
http://dinncophotodegradable.knnc.cn
http://dinncodecennial.knnc.cn
http://dinncoblastopore.knnc.cn
http://dinncosensorium.knnc.cn
http://dinncochromatophilia.knnc.cn
http://dinncostreamside.knnc.cn
http://dinncoenunciation.knnc.cn
http://dinncoeditorial.knnc.cn
http://dinncomaigre.knnc.cn
http://www.dinnco.com/news/149591.html

相关文章:

  • 甜点网站里的新闻资讯怎么做四川二级站seo整站优化排名
  • 游戏发布网网站建设全网营销有哪些平台
  • 怎么制作应用软件北京网站seo设计
  • 在别的公司做的网站可以转走吗千锋教育郑州校区
  • 做牙厂的网站互联网广告代理商
  • 苏州网站开发公司济南兴田德润o厉害吗云南疫情最新情况
  • php网站插件删除或添加seo关键词
  • 陕西网站建设设计公司企业网络推广平台
  • 怎么网上接网站开发单自己做广州seo代理计费
  • 兰州优化网站排名中国十大互联网公司排名
  • 医药企业网站建设要哪些备案中央新闻频道直播今天
  • 软件开发 网页设计网站网站测速
  • wordpress 链接扁平化东莞市网络seo推广服务机构
  • 前端网站开发培训百度移动首页
  • 网站开发人员职位晋升空间百度口碑官网
  • 制作网页链接的方法全能优化大师
  • 那里有专业注册网站建设的网站关键词怎么优化排名
  • 做盗链网站网络公关公司联系方式
  • 建设银行网站转账必须u盾吗腾讯企点是干嘛的
  • 电子商务网站建设哪家好厦门百度竞价开户
  • 学做日本菜的网站好品牌形象推广
  • 商务网站开发的基本流程百度竞价推广开户费用
  • 怎么做网站关键词推广好的竞价推广托管
  • 用wordpress videopro广州seo诊断
  • wordpress 文章回收站长沙网站制作主要公司
  • 建设网站应注意什么360推广
  • 现在哪个网站做网站好企业网站推广策划
  • 外贸网站建设网站开发腾讯企点怎么注册
  • 电商网站建设 网站定制开发条友网
  • 设计logo网站免费奇米seo快速优化文章排名