安卓Design包之NavigationView结合DrawerLayout,toolbar的使用,FloatingActionButton

FloatingActionButton

悬浮按钮:FloatingActionButton是重写ImageView的,所有FloatingActionButton拥有ImageView的一切属性。

  • app:backgroundTint - 设置FAB的背景颜色。
  • app:rippleColor - 设置FAB点击时的背景颜色。
  • app:borderWidth - 该属性尤为重要,如果不设置0dp,那么在4.1的sdk上FAB会显示为正方形,而且在5.0以后的sdk没有阴影效果。所以设置为borderWidth="0dp"。
  • app:elevation - 默认状态下FAB的阴影大小。
  • app:pressedTranslationZ - 点击时候FAB的阴影大小。
  • app:fabSize - 设置FAB的大小,该属性有两个值,分别为normal和mini,对应的FAB大小分别为56dp和40dp。
  • src - 设置FAB的图标,Google建议符合Design设计的该图标大小为24dp。
  • app:layout_anchor - 设置FAB的锚点,即以哪个控件为参照点设置位置。
  • app:layout_anchorGravity - 设置FAB相对锚点的位置,值有 bottom、center、right、left、top等。
    <android.support.design.widget.FloatingActionButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom = "true"
            android:layout_alignParentRight = "true"
            android:layout_margin="20dp"
            android:src="@mipmap/ic_launcher"/>

效果:

:

NavigationView

     通过提供抽屉导航所需的框架让实现更简单,同时它还能够直接通过菜单资源文件直接生成导航元素。把NavigationView作为DrawerLayout的内容视图来使用。NavigationView处理好了和状态栏的关系,可以确保NavigationView在API21+设备上正确的和状态栏交互。

xml文件:

利用drawerLayout作为父布局,可以实现侧滑的功能

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="fanggao.qf.toolbar_drawerlayout_navigationview_floactionbar_snackbar.MainActivity">
<!--主界面-->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <!--自定义布局-->

        </android.support.v7.widget.Toolbar>
        <!--悬浮的圆-->
        <android.support.design.widget.FloatingActionButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom = "true"
            android:layout_alignParentRight = "true"
            android:layout_margin="20dp"
            android:src="@mipmap/ic_launcher"/>
    </RelativeLayout>
<!--左侧菜单   android:layout_gravity = "start" 在布局的左侧-->
<android.support.design.widget.NavigationView
    android:layout_width="250dp"
    android:layout_height="match_parent"
    android:layout_gravity = "start"
    app:headerLayout = "@layout/layout_header"
    app:menu="@menu/menu"/>

</android.support.v4.widget.DrawerLayout>

layout_header.xml

侧滑菜单中的标题头:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#aaaaaa">
    <ImageView
        android:id="@+id/img_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@mipmap/ic_launcher"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="HELLO"
        android:layout_below="@id/img_icon"
        android:textSize="30sp"
        android:layout_margin="20dp"
        android:layout_centerHorizontal="true"/>
</RelativeLayout>

menu.xml菜单布局

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- menu支持分组和子标题,但是子标题不支持icon-->
    <!--单选-->
    <group>
        <item
            android:title="激活"
            android:icon="@mipmap/ic_launcher">
        </item>
        <item
            android:title="会员"
            android:icon="@mipmap/ic_launcher">
        </item>
        <item
            android:title="钱包"
            android:icon="@mipmap/ic_launcher">
        </item>
    </group>
    <!--菜单-->
    <item
        android:title="选项"
        android:icon="@mipmap/ic_launcher">
        <menu>
            <item
            android:title="收藏"></item>
            <item
                android:title="好评"></item>
        </menu>

    </item>
</menu>

main:

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private DrawerLayout drawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity1_main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        //设置主标题
        toolbar.setTitle("标题");
        //设置副标题
        toolbar.setSubtitle("标题的子类");
        //设置图标
        toolbar.setLogo(R.mipmap.ic_launcher);
        //设置Toolbar和DrawerLayout实现动画和联动
        this.setSupportActionBar(toolbar);

        //左侧菜单与toolbar联动
        // 给左上角图标的左边加上一个返回的图标
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用
        //ActionBarDrawerToggle可以监听抽屉开合事件,可以认为是DrawerListener的子类
        //声明mDrawerToggle对象,其中R.string.open和R.string.close简单可以用"open"和"close"替代
        ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.open, R.string.close){
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                Log.i("tag", "onDrawerOpened: ");
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                Log.i("tag", "onDrawerClosed: ");
            }
        };

        //使得图标和抽屉拉合保持同步
        actionBarDrawerToggle.syncState();
        //监听实现侧边栏的拉开和闭合,即抽屉drawer的闭合和打开
        drawerLayout.addDrawerListener(actionBarDrawerToggle);
    }
}

效果:

时间: 2024-10-24 17:10:00

安卓Design包之NavigationView结合DrawerLayout,toolbar的使用,FloatingActionButton的相关文章

安卓Design包之TabLayout控件的使用

转自: 安卓Design包之TabLayout控件的简单使用 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件.最重要的是,Android Design Support Library的兼容性更广,直接可以向下兼容到Android 2.2.这不得不说是一个良心之作. 使用方法很简单

安卓Design包之AppBar和Toolbar的联用

前面讲了Design包的的CoordinatorLayout和SnackBar的混用,现在继续理解Design包的AppBar; AppBarLayout跟它的名字一样,把容器类的组件全部作为AppBar. 如: <android.support.design.widget.AppBarLayout android:layout_width="match_parent" app:theme="@style/Base.ThemeOverlay.AppCompat.Dark

安卓Design包之超强控件CoordinatorLayout与SnackBar的简单使用

在前面的Design中,学习使用了TabLayout,NavigationView与DrawerLayout实现的神奇效果,今天就带来本次Design包中我认为最有意义的控件CoordinatorLayout. 当然还有SnackBar,不过他在实际运用中一般都是和CoordinatorLayout搭配使用的. 先说下SnackBar,这个控件其实我觉得和Toast没什么差别,不过功能上的确有增强.这个控件可以通过setAction方法设置类似按钮一样的东西.而且这个东西可以设置多个. 重点还是

安卓Design包之TabLayout控件的简单使用

Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件.最重要的是,Android Design Support Library的兼容性更广,直接可以向下兼容到Android 2.2.这不得不说是一个良心之作. 使用方法很简单,只需要添加一句依赖 compile 'com.android

安卓Design包下的TextInputLayout和FloatingActionButton的简单使用

终于介绍到Design包的最后的东西了. 也很简单,一个是TextInputLayout. TextInputLayout作为一个父容器,包含一个新的EditText,可以给EditText添加意想不到的效果,特别在注册功能开发中,用处非常广泛. 它可以直接提示输入错误,而不至于像以前一样总是点击按钮后才能检测出输入的错误,当有很多输出框的时候更是难以区分.. 并且还可以把hint 默认提示值放到上面去. 实现界面大概是这样的. 当你输入正确后是这样的. 实现代码也很简单. 添加一个监听焦点事件

安卓Design包之Toolbar控件的使用

转自:ToolBar的使用 ToolBar的出现是为了替换之前的ActionBar的各种不灵活使用方式,相反,ToolBar的使用变得非常灵活,因为它可以让我们自由往里面添加子控件.低版本要使用的话,可以添加support-v7包. * toolabr使用:替代actionBar* 可以自定义布局* 点击事件和加载菜单可以当做view来使用* 位置可以任意* 需要在清单文件中去掉actionBar* toolbar可以当做viewGroup使用xml文件: <?xml version="1

安卓Design包之CollapsingToolbarLayout(可折叠的工具栏布局)的简单使用

转自: CollapsingToolbarLayout的使用 注意:使用前需要添加Design依赖包,使用toolbar时需要隐藏标题头 CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView.Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(

安卓Design之NavigationView的使用

前面讲解了Design包下的TabLayout的使用,下面将带来NavagationView和DrawLayout以及toolbar的联动. NavigationView 通过提供抽屉导航所需的框架让实现更简单,同时它还能够直接通过菜单资源文件直接生成导航元素.把NavigationView作为DrawerLayout的内容视图来使用.NavigationView处理好了和状态栏的关系,可以确保NavigationView在API21+设备上正确的和状态栏交互. 上运行图: 以下代码在前面代码的

Material Design之NavigationView和DrawerLayout实现侧滑菜单栏

本文将介绍使用Google最新推出规范式设计中的NavigationView和DrawerLayout结合实现侧滑菜单栏效果,NavigationView是android-support-design包下的一个控件,该包下还有AppBarLayout.CoordinatorLayout.FloatingActionButton.SnackBar.TabLayout控件,也是Google在Android 5.x推荐规范式使用的控件.本系列将逐一介绍每个控件的使用... 好了,先来看看本文最终的效果