Android Fragment实现微信底部导航

1.XML布局

(1)主界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/ll_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">

        <Button
            android:id="@+id/btmain_weixin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="微信" />

        <Button
            android:id="@+id/btmain_tongxunlu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="通讯录" />

        <Button
            android:id="@+id/btmain_discover"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="发现" />

        <Button
            android:id="@+id/btmain_wo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="我" />
    </LinearLayout>

</RelativeLayout>

(2)Fragment对应的xml

<?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:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是weixin模块" />

    <Button
        android:id="@+id/bt_weixin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="测试weixin" />

</LinearLayout>

2.java后台代码

(1)MainActivity.java

package com.example.administrator.test57wechat;

import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btmain_weixin=findViewById(R.id.btmain_weixin);
        Button btmain_tongxunlu=findViewById(R.id.btmain_tongxunlu);
        Button btmain_wo=findViewById(R.id.btmain_wo);
        Button btmain_discover=findViewById(R.id.btmain_discover);
        btmain_weixin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //1.获取Fragment的管理者
                FragmentManager fragmentManager=getSupportFragmentManager();
                //2.开启事务
                FragmentTransaction beginTransaction=fragmentManager.beginTransaction();
                //3.替换Fragment
                beginTransaction.replace(R.id.ll_layout,new WeixinFragment());
                beginTransaction.commit();
            }
        });

        btmain_tongxunlu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //1.获取Fragment的管理者
                FragmentManager fragmentManager=getSupportFragmentManager();
                //2.开启事务
                FragmentTransaction beginTransaction=fragmentManager.beginTransaction();
                //3.替换Fragment
                beginTransaction.replace(R.id.ll_layout,new TongxunluFragment());
                beginTransaction.commit();
            }
        });

        btmain_wo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //1.获取Fragment的管理者
                FragmentManager fragmentManager=getSupportFragmentManager();
                //2.开启事务
                FragmentTransaction beginTransaction=fragmentManager.beginTransaction();
                //3.替换Fragment
                beginTransaction.replace(R.id.ll_layout,new WoFragment());
                beginTransaction.commit();
            }
        });

        btmain_discover.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //1.获取Fragment的管理者
                FragmentManager fragmentManager=getSupportFragmentManager();
                //2.开启事务
                FragmentTransaction beginTransaction=fragmentManager.beginTransaction();
                //3.替换Fragment
                beginTransaction.replace(R.id.ll_layout,new DiscoverFragment());
                beginTransaction.commit();
            }
        });
    }
}

(2)Fragment

package com.example.administrator.test57wechat;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class WeixinFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_weixin,null);

        //测试fragment中的组件是否可以被点击
        Button bt_weixin=view.findViewById(R.id.bt_weixin);
        bt_weixin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("hello weixin");
            }
        });
        return view;
    }
}

3.效果图

   

原文地址:https://www.cnblogs.com/luckyplj/p/10685837.html

时间: 2024-10-14 05:27:43

Android Fragment实现微信底部导航的相关文章

Android UI-仿微信底部导航栏布局

现在App基本的标配除了侧滑菜单,还有一个就是底部导航栏,常见的聊天工具QQ,微信,购物App都有底部导航栏,用户可以随便切换看不同的内容,说是情怀也好,用户体验也罢.我们开发的主要的还是讲的是如何如何实现其功能,网上实现的方式无外乎两种,一种是使用tabhost进行切换,一种是直接使用Fragment进行切换,底部导航栏的布局有的使用的是线性布局,有的是使用的RadioGroup,本文中是使用fragment+RadioGroup是实现的,看正文吧: 基础布局 其中主要低 底部导航栏,其他都没

android高仿微信底部渐变导航栏

最近有很多人微信底部的变色卡片导航是怎么做的,我在网上看了好几个例子,都是效果接近,都存有一些差异,自己琢磨也做了一个,几乎99%的还原,效果还不错吧 仔细观察微信图片,发现他有两部分内容,外面的边框和里面的内容,内容的颜色由绿变为透明,这部分可以直接改变透明度,外面的边框,颜色在灰色和绿色之间变化,就不能简单的改变透明度了,ImageView的tint 为我们提供了可行方案,tint可以为图标着色,既可以在xml中,也可以在代码中设置,一共有16中模式,分别为 在xml中设置:直接添加tint

关于在Android中如何设置底部导航栏

Android应用底部导航栏(选项卡)实例 现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能. 我们先看下该demo实例的框架图:   其中各个类的作用以及资源文件就不详细解释了,还有资源图片(在该Demo中借用了其它应用程序的资源图片)也不提供了,大家可以自行更换自己需要的资源图片.直接上各个布局文件或各个类的代码: [1]  res/layout目录下的maintabs.xml 源码

Android 上滑显示底部导航,下滑显示标题bar

本文简单介绍使用属性动画来实现上滑显示底部导航,下滑显示标题bar.先上图看效果,再分析: 可以看出这是个listview有标题和底部,有点像下拉刷新和上拉加载更多.只不过下拉或上拉一定时位置固定拉不动,且只在list的第一个item出现显示时,才平滑动画的让标题或底部显示或隐藏. 实现思路: 1.整个布局有三个部分构成,上部由一个RelativeLayout放ImageView或TextView.中间部分是个listView,下部是一个TextView. 2.采用LinearLayout摆放中

Android学习笔记---使用TabHost实现微信底部导航栏效果

一. TabHost介绍 TabHost组件可以在界面中存放多个选项卡, 很多软件都使用了改组件进行设计; 1. TabHost常用组件 TabWidget : 该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡; TabSpec : 代表了选项卡界面, 添加一个TabSpec即可添加到TabHost中; -- 创建选项卡 : newTabSpec(String tag), 创建一个选项卡; -- 添加选项卡 : addTab(tabSpec); 2. TabHos

ViewPager + Fragment 制作类似底部导航栏

1. 四个类似的Frament布局 tab_main_fragment.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical&q

微信底部导航渐变效果-----viewpager&amp;PorterDuffXfermode

实现这个功能主要涉及的知识点有 ViewPager PorterDuffXfermode 自定义视图 ViewPager 关于ViewPager需要注意的知识主要是OnPageChangeListener,该接口的三个方法如下 public abstract void onPageScrollStateChanged (int state) public abstract void onPageScrolled (int position, float positionOffset, int p

Android之framework修改底部导航栏NavigationBar动态显示和隐藏

大家都知道,Android从3.0版本开始就加入了NavigationBar,主要是为那些没有实体按键的设备提供虚拟按键,但是,它始终固定在底部,占用48dp的像素高度,尽管从android 4.4开始可以全透明,使用这一部分像素,但三个按钮始终悬浮在屏幕上,这对于有强迫症的朋友来说是无法忍受的.因此,本文的目的就是修改framework部分代码,可以动态隐藏和显示NavigationBar,同时又尽量不影响系统的正常. 主要思路: 在NavigationBar的布局左部加入一个Button(在

【android】类似微信底部按钮标签实现

这里用到的是fragment 原理大概如下 1.首先新建一个activity,在xml里面分为上下两个部分,上面是一个RelativeLayout,下面是一个LinearLayout,里面装有四个按钮. 2.然后新建4个fragment的activity,分别新建自己的xml. java代码如下 public class fragmentActivity1 extends Fragment{ public View onCreateView(LayoutInflater inflater, Vi