design 包android_android design包 - CSDN
  • 歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现Material Design设计效果,官方给出了Android support design library 支持库,让开发者更容易的实现材料设计的效果。这篇文

    Android5.0是有史以来最重要的安卓版本之一,这其中有很大部分要归功于material design的引入,这种新的设计语言让整个安卓的用户体验焕然一新。歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现Material Design设计效果,官方给出了Android support design library 支持库,让开发者更容易的实现材料设计的效果。这篇文章将介绍常用的一下几种控件。

    1、CoordinatorLayout

    用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。继承自framlayout,是framlayout的扩展类,比他功能更加强大,能够支持很多绚丽的效果,一般作为父布局。

    2、CollapsingToolbarLayout

    用来对Toolbar进行再次包装的ViewGroup,主要是用于实现折叠,伸缩的App Bar效果。它需要放在AppBarLayout布局里面,并且作为AppBarLayout的直接子View,主要是提供一个可折叠的Toolbar容器,对容器中的不同View设置layout_collapseMode折叠模式,来达到不同的折叠效果。作为AppBarLayout的子布局进行配合使用。通常有两个子控件,一个是ImageView,一个是Toobar,Toobar主要是用来替换ActionBar的,所以在使用之前首先要隐藏掉。可以通过代码的方式隐藏,也可以通过配置文件的方式,还可以通过清单文件配置隐藏:

    (1)在我们的styles.xml文件中的AppTheme标签中加入如下两行:

    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

    (2在清单文件中加入

    android:theme="@style/Theme.AppCompat.Light.NoActionBar"

    相关属性设置如下:

    app:contentScrim="@android:color/holo_blue_dark";//titebar的背景颜色
    app:title="赵丽颖";//titlebar所
    展示的字体
    app:scrimAnimationDuration="50";//该属性控制toolbar收缩时,颜色变化的动画持续时间。即颜色变为contentScrim所指定的颜色进行的动画所需要的时间。
    app:expandedTitleGravity="bottom|right";//titebar展开后字体显示的位置
    app:collapsedTitleGravity="center_horizontal";//titlebar到最上边时候的显示位置
    app:titleEnabled="true";//是否显示标题文本
    app:expandedTitleMargin="20dp";//展开之后的文字margin
    android:fitsSystemWindows="true";//预留空间,能够实现沉浸式状态栏效果
    app:layout_collapseParallaxMultiplier="0.7";//设置视差的系数,介于0.0-1.0之间。越大视差越大

    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar";//主题颜色
    app:layout_scrollFlags="scroll|exitUntilCollapsed";//支持滑动收缩效果

    子类可收缩的View:
    app:layout_collapseMode="parallax";//View随着控件的滑动而收缩

    Toolbar:
    app:layout_collapseMode="pin";//pin收缩后固定于最顶端,parallax随着控件滑动收缩而收缩

    3、AppBarLayout

    AppBarLayout主要用来设置头布局,继承自linearlayout,他包含CollapsingToolbarLayout子布局和其他布局,CollapsingToolbarLayout能够实现视差伸缩滑动效果,其他子布局一般是导航栏,例如TabLayout。

    4、TabLayout

    TabLayout:类似于viewpagerindicator,radiobutton+viewpager,实现叶签滑动效果http://blog.csdn.net/yoonerloop/article/details/70766002点击打开链接

    5、CardView

    CardView是在安卓5.0提出的卡片式控件。

    app:cardBackgroundColor="#6699FF";//设置选项卡的背景
    app:cardCornerRadius="7dp";//设置选项卡的圆角大小
    app:cardElevation="7dp";//设置选项卡的阴影背景大小
    app:cardMaxElevation="10dp"//设置z轴的最大高度值
    app:cardUseCompatPadding="true";//兼容android5.0以上版本两个卡片之间的距离失效问题
    android:clickable="true";//点击产生水波纹效果
    padding设置:
    app:contentPadding 设置内容的padding
    app:contentPaddingLeft 设置内容的左padding
    app:contentPaddingTop 设置内容的上padding
    app:contentPaddingRight 设置内容的右padding
    app:contentPaddingBottom 设置内容的底padding

    6、FloatingActionButton

    android:layout_gravity="end|bottom";//在布局上的显示 位置
    app:borderWidth="0dp";//按钮内边框阴影带边框大小
    app:backgroundTint="#f00";//按钮图片外围颜色
    app:elevation="6dp";//按钮外边框阴影带的大小
    app:pressedTranslationZ="52dp";//点击后阴影扩散的效果
    app:rippleColor="#33728dff";//按钮边框阴影的颜色,默认取的是theme中的colorControlHighlight。
    android:clickable="true";//点击产生水波纹效果

    7、NestedScrollView

    和ScrollView一样,区别是对新的控件做了一些兼容,类似于listview与recycleView。

    8、NavigationView

    NavitationView就是DrawerLayout侧边栏的那个菜单。这个菜单整体上分为两部分,上面一部分叫做HeaderLayout,下面的那些点击项都是menu。HeaderLayout是一个布局,根据需求设置,menu主要是每个item。

    android:layout_gravity="left"属性表示该View是左边的滑出菜单。

    app:headerLayout="@layout/header_layout";//表示引用一个头布局文件。

    app:menu="@menu/main";//表示引用一个menu作为下面的点击项item。

    app:itemIconTint="@color/blue";//标识为图片设置颜色,默认是灰色。

    navigationView.setItemIconTintList(null); //设置图片颜色为图片显示的默认颜色

    app:theme="@style/MenuTextStyle";//设置item字体大小,背景颜色等等主题

    menu设置:

    <item
        android:id="@+id/file"
        android:icon="@mipmap/ic_launcher"
        android:title="设置"/>

    android:icon="@mipmap/ic_launcher";//设置item的左边图标

    android:title="设置";//设置item右侧文字

    默认没有分割线,如果需要分割线则需要在item外层嵌套一个<group android:id="@+id/g1"></group>,并加上id.

     View headerView = navigationView.getHeaderView(0);//获取头布局的第一个控件

    //设置item点击事件

    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {  
        @Override  
        public boolean onNavigationItemSelected(MenuItem item) {  
            //在这里处理item的点击事件  
            return true;  
        }  
    });  

    9、BottomNavigationView

    BottomNavigationView是Google推出的底部导航栏组件,在没有这些底部导航组件之前,开发者多使用的是RadioGroup,他的用法和上面的NavitationView比较类似,看看他的属性:

    app:itemIconTint是设置底部导航按钮图标颜色的属性

    app:itemTextColor是设置底部导航按钮文字颜色的属性

    xml中的布局如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        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:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.administrator.glidedemo.MainActivity">
    
        <android.support.v4.view.ViewPager
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </android.support.v4.view.ViewPager>
    
        <android.support.design.widget.BottomNavigationView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?android:attr/windowBackground"
            app:itemIconTint="@drawable/tab_text_color_selector"
            app:itemTextColor="@drawable/tab_text_color_selector"
            app:menu="@menu/navigation">
        </android.support.design.widget.BottomNavigationView>
    </LinearLayout>
    menu文件夹和上面的也很类似:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/tab_one"
            android:icon="@drawable/tab_text_color_selector"
            android:title="综合"/>
    
        <item
            android:id="@+id/tab_two"
            android:icon="@drawable/tab_text_color_selector"
            android:title="本地"/>
    
        <item
            android:id="@+id/tab_three"
            android:icon="@drawable/tab_text_color_selector"
            android:title="我的"/>
    </menu>
    在Activity中点击事件的切换的监听如下:

     mNavigationView.setOnNavigationItemSelectedListener(
                    new BottomNavigationView.OnNavigationItemSelectedListener() {
                        @Override
                        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                            mTextView.setText(item.getTitle().toString().toUpperCase());
                            return true;
                        }
                    });
        }

    注意:这控件有以下坑:

    1、底部导航栏高度默认是 56dp。
    2、菜单元素只能是 3~5 个。如果个数少于3个或者多于5个,则会报错。
    3、菜单元素如果大于3个,会出现切换时选中菜单的放大效果,无法设置,只能通过反射取消。

    4、底部导航栏背景颜色默认是当前样式的背景色(白色/黑色),你可以使用 app:itemBackground="@android:color/black" 来更改。

    10、TextInputLayout

    它是一种新的继承自LinearLayout的布局,让我们使用时里面只能包含一个EditText或者其子类的控件,该布局可以通过设置hint和Error显示浮动标签。如下:

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="呵呵哒"
                android:inputType="phone"/>
        </android.support.design.widget.TextInputLayout>
    

    android:hint="呵呵哒";//浮动的标签设置,可以设置在EditText上面,也可以用设置在TextIn;putLayout上面,但是只能设置一个;

    app:hintEnable="false";//关闭浮动标签(默认是开启的)

    app:hintAnimationEnabled="boolean";//设置浮动标签显示与隐藏之间的过渡动画(默认是开启的)

    app:counterEnabled="true";

    app:counterMaxLength="11";//两个结合可以让用户看到自己当前输入的长度,当超过指定长度会提示

    app:passwordToggleEnabled="true" //设置密码可见与否的图标,默认是关闭的

    app:passwordToggleDrawable="@mipmap/ic_launcher";//设置指定密码可见与否的图标

    app:passwordToggleTint="@color/colorAccent";//给图标加颜色

    app:hintTextAppearance="@style/hint";//自定义浮动标签颜色大小等

    app:errorTextAppearance="@style/error";//自定义错误标签颜色大小等

    以上均在TextInputLayout标签下面添加,而不是EditText

    监听虚拟键盘,输入法下一项,光标定位到密码输入框:

    用户名EditText中加入:

    android:imeActionId="@+id/password" 

    android:imeOptions="actionNext"

    密码EditText中加入:

    android:imeActionId="@+id/button"

    android:imeOptions="actionDone"

    监听:

      mPasswordEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                @Override
                public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
                    if ( id == EditorInfo.IME_ACTION_DONE) {
                        startLogin();
                        return true;
                    }
                    return false;
                }
            });

    以上就是material design包中常用的控件,以后还会陆续补充,关于这些新控件的应用见下一篇博文:点击打开链接

    http://blog.csdn.net/yoonerloop/article/details/71411499



    展开全文
  • 内含各个版本的android-support-design包内含各个版本的android-support-design包
  • Android Design包下控件

    2017-05-05 13:56:05
    Google IO 2015提出了Material Design设计风格,意在使移动端... Support LibraryAndroid Design Support Library的兼容性更广,直接可以向下兼容到 Android 2.2,这不得不说是一个良心之作。 其中包含了很多新控件
            Google IO 2015提出了Material Design设计风格,意在使移动端包括Web的设计风格一直,算是给出了一个比较好的可以参考规范,其中Android提出了Design Support Library包,Android Design Support Library的兼容性更广,直接可以向下兼容
    Android 2.2,这不得不说是一个良心之作。其中包含了很多新控件,这些控件一个共同的特点就是优雅,那么,又包含哪几款控
    件呢?接下来先给一个总纲:
            这些就是加入的新控件,那么,接下来我会对这些控件进行分类并对每个项目写上demo,希望自己能够坚持,也希望大家可
    给出意见和帮助。
    展开全文
  • 在导入design包以后,Android Studio R的问题,提示还显示:Move R from model to R 解决办法: 方法一:点击Build-》Rebuild Project 方法二:直接点击运行 如果上面的方法不行,请将...

    在导入design包以后,Android Studio R的问题,提示还显示:Move R from model to R



    解决办法:

    方法一:点击Build-》Rebuild Project

    方法二:直接点击运行


    如果上面的方法不行,请将Android Studio 重启以后再试一次就可以了。




    展开全文
  • Google为了ui的美观并且...在Design包当中包含了很多UI控件,常用的大概有:TabLayout,NavigationView,BottomSheetDialog等控件。  下面我们关于design包当中的协调者布局进行讲解: 1.android.support.design.widg

    Google为了ui的美观并且与当前市场常见的产品界面相匹配,在android 5.0之后推出了ui控件包——design。在Design包当中包含了很多UI控件,常用的大概有:TabLayout,NavigationView,BottomSheetDialog等控件。

          下面我们关于design包当中的协调者布局进行讲解:

    1.android.support.design.widget.CoordinatorLayout 超级FrameLayout
    手势,及滚动布局,MD的手势有很多组成部分,包括touch ripples和meaningful transitions。
    Design library引入了CoordinatorLayout,一个从另一层面去控制子view之间触摸事件的布局,
    Design library中的很多控件都利用了它。一个很好的例子就是当你将FloatingActionButton作
    为一个子View添加进 CoordinatorLayout并且将CoordinatorLayout传递给 Snackbar.make(),
    在3.0及其以上的设备上,Snackbar不会显示在悬浮按钮的上面,而是FloatingActionButton 
    利用CoordinatorLayout提供的回调方法,在Snackbar以动画效果进入的时候自动向上移动让出位置,
    并且在Snackbar动画地消失的时候回到原来的位置,不需要额外的代码。

    CoordinatorLayout的另一个用例是ActionBar与滚动技巧。你可能已经在自己的布局中使用了Toolbar
    它允许你更加自由的自定义其外观与布局的其余部分融为一体。Design library把这种设计带到了更高的水平,
    使用AppBarLayout可以让你的Toolbar与其他View(比如TabLayout的选项卡)能响应被标记了
    ScrollingViewBehavior的View的滚动事件。
    注意项:
    当用户滚动RecyclerView,AppBarLayout可以这样响应滚动事件:
    根据子view的滚动标志(scroll flag)来控制它们如何进入(滚入屏幕)与退出(滚出屏幕)。
    Flag包括:
        scroll:所有想滚动出屏幕的View都需要设置这个flag,没有设置这个flag的View将被固定在屏幕顶部。
        enterAlways:这个flag让任意向下的滚动都会导致该View变为可见,启用快速“返回模式”。
        enterAlwaysCollapsed:当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。
        exitUntilCollapsed:this flag causes the view to scroll off until it is ‘collapsed’ (its minHeight) before exiting。


    特别注意:所有使用scroll flag的View都必须定义在没有使用scroll flag的View前面,这样才能确保所有的View从顶部退出,留下固定的元素。
    PS一句:CoordinatorLayout还提供了layout_anchor和layout_anchorGravity属性一起配合使用,可以用于放置floating view,比如FloatingActionButton与其他View的相对位置。相见Demo中演示。 

    2.android.support.design.widget.AppBarLayout MD风格的滑动Layout
    这个没啥解释的,就是一个ViewGroup,配合ToolBar与CollapsingToolbarLayout等使用。就是一个纯容器类。
    无特殊注意项。 

    3.android.support.design.widget.CollapsingToolbarLayout 可折叠MD风格ToolbarLayout 
    可伸缩折叠的Toolbar (Collapsing Toolbar),直接添加Toolbar到AppBarLayout可以让你使用enterAlwaysCollapsed和 
    exitUntilCollapsedscroll标志,但是无法控制不同元素如何响应collapsing的细节。这里使用了CollapsingToolbarLayout
    的app:layout_collapseMode=”pin”来确保Toolbar在view折叠的时候仍然被固定在屏幕的顶部。还可以做到更好的效果,
    当你让CollapsingToolbarLayout和Toolbar在一起使用的时候,
    title 会在展开的时候自动变得大些,
    而在折叠的时候让字
    体过渡到默认值。必须注意,在这种情况下你必须在CollapsingToolbarLayout上调用 setTitle(),而不是在Toolbar上。
    除了固定住View,
    你还可以使用 app:layout_collapseMode=”parallax”
    (以及使用 app:layout_collapseParallaxMultiplier=”0.7”来设置视差因子)来实现视差滚动效果
    (比如 CollapsingToolbarLayout里面的一个ImageView),这中情况和CollapsingToolbarLayout的 
    app:contentScrim=”?attr/colorPrimary”属性一起配合更完美。
    有一件事情必须注意,那就是CoordinatorLayout并不知道FloatingActionButton或者AppBarLayout的内部工作原理,
    它只是以Coordinator.Behavior的形式提供了额外的API,该API可以使子View更好的控制触摸事件与手势以及声明
    它们之间的依赖,并通过onDependentViewChanged()接收回调。
    可以使用CoordinatorLayout.DefaultBehavior(你的View.Behavior.class)注解或者在布局中使用
    app:layout_behavior=”com.example.app.你的View$Behavior”属性来定义view的默认行为。 
    framework让任意View和CoordinatorLayout结合在一起成为了可能。 

    4.nestedscrollview:
    在新版的support-v4兼容包里面有一个NestedScrollView控件,这个控件其实和普通的ScrollView并没有多大的区别,
    这个控件其实是MD(Meterial Design)中设计的一个控件,目的是跟MD中的其他控件兼容。应该说在MD中,
    RecyclerView代替了ListView,而NestedScrollView代替了ScrollView,他们两个都可以用来跟ToolBar交互,
    实现上拉下滑中ToolBar的变化。


    我们通过具体的例子,将以上四个控件嵌套起来,查看一下,最终的效果,我们主要在布局当中进行体现:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/coorlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="280dp">
            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapslayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:collapsedTitleGravity="left|top"
                app:expandedTitleGravity="right|bottom"
                app:expandedTitleMargin="10dp"
                app:contentScrim="@color/colorAccent"
                app:layout_scrollFlags="exitUntilCollapsed|scroll">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="220dp"
                    android:background="#00ffff"
                    app:layout_collapseMode="parallax"
                    android:scaleType="centerCrop"/>
                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    app:layout_collapseMode="pin"
                    app:title="我是Toolbar">
    
                </android.support.v7.widget.Toolbar>
            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:src="@mipmap/ali"
                    android:scaleType="centerCrop"/>
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:src="@mipmap/ali"
                    android:scaleType="centerCrop"/>
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:src="@mipmap/ali"
                    android:scaleType="centerCrop"/>
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:src="@mipmap/ali"
                    android:scaleType="centerCrop"/>
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:src="@mipmap/ali"
                    android:scaleType="centerCrop"/>
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:src="@mipmap/ali"
                    android:scaleType="centerCrop"/>
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:src="@mipmap/ali"
                    android:scaleType="centerCrop"/>
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:src="@mipmap/ali"
                    android:scaleType="centerCrop"/>
            </LinearLayout>
        </android.support.v4.widget.NestedScrollView>
    </android.support.design.widget.CoordinatorLayout>
    


    然后将这个布局绑定给activity,运行之后,就可以看到效果了,效果如下:





    展开全文
  • Android 5.0 Lollipop 是曾经最著名的 Android 发布之一,这样说很大一部分原因是材料设计的引入,而材料设计则是一种刷新了整个 Android 体验的设计语言。这个 详细说明 是开始适应材料设计的好地方,但是...
  • Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件。...
  • 我们都知道Marterial Design是Google推出的全新UI设计规范,如果对其不太了解的可以看下:Material design非官方中文指导手册 ,或者我的前面几篇Material Design的译文,相比之前Google在Android Holo风格上平平...
  • android.view.InflateException: Binary XML file line #8: Error inflating class android.support.design解决方案
  • 手把手教你如何在Android Studio 中配置Android Design Support Library 我的Android Studio版本较新,在.gradle中使用compile时,提示我compile已经过时, 只能使用implements或api。只能另寻他发,很简单哈,只需...
  • 并且设置了design包依赖android-support-v7-appcompat,自己的项目依赖android-support-v7-appcompat和design包。感觉这么设置应该没问题啊,结果clean的时候报错:The container 'Android Dependencies' references...
  • ),为此用到了android.support.design包(以下简称design包)的控件,发现各种问题,花了一下午时间梳理清了。踩坑过程就不赘述了,直接列出需要改动的地方: 1、修改Android.mk,要点: a、需要添加android-...
  • 最新design包 包含Snackbar,FloatingActionButton,TabLayout,TextInputLayout,NavigationView等等
  • 在eclipse中正确使用android support design library的方法。
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • Android Design Support Library使用详解Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们...
  • 最近在看NavigationView,所以涉及到了Design这个,因为习惯上用eclipse所以就在github上找了些例子看,最后就用了[这个例程]...导入到我自己的工作目录下,也添加了下面这3个 android support library v7 ...
  • Android有好几个官方的包android.support.v7,android.support.v4,android.app还有5.0.design支持库。最近开发中,一个view死后显示不出来。最后发现是导入的库出了问题。这里简单提一下。Android.app包是最原始的...
  • Google在2015的IO大会上,给我们带来了Material Design的设计规范,同时,也给我们带来了全新的Android Design Support Library,利用这个库在Android上可以做一些相对统一风格的UI界面。 导入 如何在Android ...
1 2 3 4 5 ... 20
收藏数 27,452
精华内容 10,980
关键字:

design 包android