android 底部通知,Android Fragment实现底部通知栏

Android Fragment实现底部通知栏,供大家参考,具体内容如下

截图如下:

18e01f10bdbf5fabec01a813f255bd38.png

1. 第一步先要创建fragment(动态注册)

829c1526b6a8c572eebf545f69dff63e.png

然后将两个勾选取消掉(还有一种是自己手动创建)

会自动生成相对应的layout布局,剩下的要根据自己的需求了

2.在Activity的布局里写好四个按钮

这里不是重点…

android:layout_width="match_parent"

android:layout_height="match_parent"

>

android:id="@+id/ll_content_part"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

android:id="@+id/ll_function"

android:layout_alignParentBottom="true"

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/btn_msg_list"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textSize="13dp"

android:onClick="click"

android:text="msg"/>

android:id="@+id/btn_contact"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textSize="13dp"

android:onClick="click"

android:text="contact"/>

android:id="@+id/btn_disc"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textSize="13dp"

android:onClick="click"

android:text="disc"/>

android:id="@+id/btn_me"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textSize="13dp"

android:onClick="click"

android:text="me"/>

3.Activity的代码

其中定义了四个整型常量记录了四个按钮的状态,还有一个当前状态,进而判断当前点击按钮的状态,点击切换文字颜色和图标

每次判断四个Fragment的引用是否为空,不为空就不需要每次在new一遍Fragment

replace每次都会重新初始化fragment,它是先remove掉相同id的fragment,再add当前fragment。

add不会回每次都初始化fragment,一般配合hide()和show()方法

public class MainActivity extends AppCompatActivity {

private Button btn_contact;

private Button btn_disc;

private Button btn_me;

private Button btn_msg_list;

private FragmentManager fragmentManager;

private MsgListFragment msgListFragment;

private ContactFragment contactFragment;

private DiscoveryFragment discoveryFragment;

private MeFragment meFragment;

private final int STATE_MSG =1;

private final int STATE_CON =2;

private final int STATE_DIS =3;

private final int STATE_ME =4;

private int currentState;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

initData();

chageButtonColor(currentState,STATE_MSG);

}

private void initData() {

fragmentManager = getFragmentManager();

switchFragment(this.STATE_MSG);

}

private void initView() {

btn_contact = (Button) findViewById(R.id.btn_contact);

btn_disc = (Button) findViewById(R.id.btn_disc);

btn_me = (Button) findViewById(R.id.btn_me);

btn_msg_list = (Button) findViewById(R.id.btn_msg_list);

}

public void click(View view) {

switch (view.getId()){

case R.id.btn_msg_list:

switchFragment(this.STATE_MSG);

break;

case R.id.btn_contact:

switchFragment(this.STATE_CON);

break;

case R.id.btn_disc:

switchFragment(this.STATE_DIS);

break;

case R.id.btn_me:

switchFragment(this.STATE_ME);

break;

}

}

private void switchFragment(int toState) {

if (toState == currentState)

return;

chageButtonColor(currentState,toState);

this.currentState=toState;

FragmentTransaction transaction = this.fragmentManager.beginTransaction();

Fragment fragment=msgListFragment;

switch (toState){

case STATE_DIS:

if (discoveryFragment == null)

discoveryFragment= new DiscoveryFragment();

fragment= discoveryFragment;

break;

case STATE_ME:

if (meFragment == null)

meFragment= new MeFragment();

fragment= meFragment;

break;

case STATE_CON:

if (contactFragment == null)

contactFragment= new ContactFragment();

fragment= contactFragment;

break;

case STATE_MSG:

if (msgListFragment == null)

msgListFragment= new MsgListFragment();

fragment= msgListFragment;

break;

}

transaction.replace(R.id.ll_content_part,fragment);

transaction.commit();

}

private void chageButtonColor(int currentState,int toState){

switch (currentState){

case STATE_DIS:

this.btn_disc.setTextColor(Color.BLACK);

break;

case STATE_ME:

this.btn_me.setTextColor(Color.BLACK);

break;

case STATE_CON:

this.btn_contact.setTextColor(Color.BLACK);

break;

case STATE_MSG:

this.btn_msg_list.setTextColor(Color.BLACK);

break;

}

switch (toState){

case STATE_DIS:

this.btn_disc.setTextColor(Color.GREEN);

break;

case STATE_ME:

this.btn_me.setTextColor(Color.GREEN);

break;

case STATE_CON:

this.btn_contact.setTextColor(Color.GREEN);

break;

case STATE_MSG:

this.btn_msg_list.setTextColor(Color.GREEN);

break;

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程圈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android底部导航fragment是一种在Android应用程序中实现底部导航的方法,它使用了Android框架中的Fragment类来实现导航的切换。通过使用底部导航fragment,开发者可以在应用程序中更简单地实现导航,并且可以更容易地管理应用程序的不同部分。 ### 回答2: Android底部导航fragment是一种常用的界面设计方法,旨在为用户提供快速简便的主要应用程序的导航方式。底部导航fragment通常包含四个或更多的项目,每个项目都是一个fragment,可以切换到相应的界面,从而实现切换界面的功能。 在Android底部导航fragment中,底部导航通常是固定不变的,而每个fragment则是可替换的组件,它们可以根据用户的需求进行加载和卸载。这种设计方法可以帮助用户快速访问主要的应用程序功能,在不同的fragment之间快速切换,从而提高用户的体验和效率。 底部导航fragment的主要优点是可以帮助开发者设计出简单易用的界面,同时也能够提高用户的交互体验。此外,这种设计方法还可以帮助开发人员更好地组织和管理应用程序的代码库,从而减少代码维护的工作量。开发人员可以通过使用fragment来分离UI组件和业务组件,从而更容易地管理应用程序逻辑,提高代码质量和可维护性。 总的来说,Android底部导航fragment对于开发者和用户来说都是非常有用的,它可以提高应用程序的交互体验,同时也可以简化代码开发和维护工作。因此,如果您在开发移动应用程序,可以考虑使用底部导航fragment来改善用户体验和开发效率。 ### 回答3: Android 底部导航 FragmentAndroid 提供的一个开发工具,它能够快速简单地创建具有多个页面的应用程序。底部导航通常是一个五个选项卡的标签,这些选项卡通常包含每个页面的标题和图标,以及每个选项卡所对应的页面/Fragment(即子页)。 在使用 Android 底部导航 Fragment 时,我们可以通过以下步骤实现: 1. 在 XML 中创建底菜单控件 底菜单控件提供了五个子项,每个子项代表了一个 Fragment 页面,并且每个子项中的图标和标题可以根据项目需求进行修改。 2. 创建 Fragment 在项目中可以创建多个 Fragment 页面,并在 Activity 中嵌套这些页面。每个 Fragment 页面都有自己的布局文件,并且具有自己的加载内容。在使用底部导航 Fragment 时,需要将 Fragment 页面与 ViewPager 结合使用,以便在子项点击时切换到相应的 Fragment 页面。 3. 适配器 底部导航适配器提供了与底菜单控件对应的 Fragment 页面,使得每个子项在被单击时能够正确显示相应的页面。适配器还可以控制子项的图标及选中状态的变化。 4. 事件处理 在底部导航初始化时需要监听各子项的单击事件,在每个子项单击时将 ViewPager 切换到相应的 Fragment 页面。在线程中调用 setOnPageChangeListener 方法以完成事件处理。 总而言之,Android 底部导航 Fragment 是多功能的工具,可以轻松地创建多个页面的应用程序。通过按照上述步骤创建底部导航,我们可以快速简便地实现多页面应用程序的开发,为用户提供更好的界面体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值