Android Design Support Library 中控件的使用简单介绍(一)
Android Design Support Library 中控件的使用简单介绍(一)
介绍
在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android 2.1 。 这些组件在我看来就是对 Github中最近比较火的 android 组件进行了封装!!
下载
要使用这个库,当然得先下载啦!(没有翻墙的同学肯定已经哭晕在厕所了!!)这里我给童鞋们,提供一个简单的方法:
就是使用 红杏 提供的公益代理!具体使用方法如下图:
之后就是使用 Android SDK Manager 更新下载了!!
使用
第一步--引用
引用这个库:在build.gradle
文件中加上这段代码:compile 'com.android.support:design:22.2.0
第二步--具体控件的使用
TextInputLayout
以前当我们使用 EditText 这个组件的 hint 属性的时候,当用户输入第一个字母之后,这个 hint 中的文本就会消失!有点影响用户体验!但是现在不一样了!现在只要把 EditText 包含在 TextInputLayout 中,这个 hint 中的文本就会变成 floating lable 浮动在 EditText 上方!同时,也支持在 EditText 下方显示错误信息好了,我么先来看一下 TextInputLayout 这个控件的公共方法吧!
想必大家也能看明白 (我在有的函数解释下)
getEditText()
得到控件中包含的 EditText 控件setError(CharSequence error)
设置错误信息并显示在 EditText 下方 应用场景:比如用户输错了密码或者用户名等setHint(CharSequence hint)
设置提示信息setErrorEnabled(boolean enabled)
设置setError(CharSequence error)
这个函数是否可用 记住哦:这个函数一定要在setError(CharSequence error)
这个函数之后执行哦!具体原因 大家可以去看源码哦!
现在我们先在布局文件中布局:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/textinput">
<EditText
android:layout_marginTop="4dp"
android:layout_width="match_parent"
android:layout_height="48dp"/>
</android.support.design.widget.TextInputLayout>
很简单就是一个嵌套!我们接下来 onCreate(Bundle savedInstanceState)
方法中的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textinput = (TextInputLayout) findViewById(R.id.textinput);
et_content = textinput.getEditText();
textinput.setHint("请输入用户名");
textinput.setError("密码输入错啦!");
textinput.setErrorEnabled(true);//当设置成false的时候 错误信息不显示 反之显示
}
代码很简单 不细说!大家直接看效果图:
FloatingActionButton
由于这个控件相对简单!我就直接在上面的那个布局中增加这个按钮,并把它显示在右边!
<android.support.design.widget.FloatingActionButton
android:id="@+id/button"
android:layout_width="48dp"
android:layout_gravity="right"
android:layout_height="48dp"
android:orientation="vertical" />
接着我们在看代码区域:
button.setRippleColor(Color.GRAY);//设置按下去的波纹颜色
button.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.ic_menu_add));//背景色
不解释了简单!
Snackbar
和 Toast 类似。但是它有简单的可选择的单个的Action。 同时还有个特性就是用户可以在它消失时间未到的时候,移掉它!
现在来介绍下 Snackbar 的一些函数
dismiss()
用来消失 Snackbar 的getDuration()
得到显示时长的make(View view, int resId, int duration)
创建 Snackbar 的make(View view, CharSequence text, int duration)
和上面一样setAction(int resId, View.OnClickListener listener)
对 Snackbar 设置单击时间,这里的单击时间不是作用于整个 Snackbar 的,还是作用于你所设置的这个字段的,也就是这个resId
setAction(CharSequence text, View.OnClickListener listener)
和上面一样setActionTextColor(ColorStateList colors)
设置动作字的颜色,就是对上面的setAction 中文字颜色的设置setActionTextColor(int color)
和上面一样setDuration(int duration)
设置 Snackbar 显示时常setText(int resId)
更新 Snackbar 中的文本setText(CharSequence message)
和上面一样show()
显示 Snackbar
函数已经介绍完了!现在,我会FloatingActionButton增加一个单击事件用来显示 Snackbar 。直接看代码:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar
.make(content, "你好啊", Snackbar.LENGTH_LONG)
.setAction("delete", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "delete", Toast.LENGTH_SHORT).show();
}
})
.show();
}
});
直接看效果吧!
Tabs
选项卡,一般和 TabLayout 一起使用哦。现在我们来看一下 TabLayout 的一些函数。
addTab(TabLayout.Tab tab, int position, boolean setSelected)
增加选项卡到 layout 中addTab(TabLayout.Tab tab, boolean setSelected)
同上addTab(TabLayout.Tab tab)
同上getTabAt(int index)
得到选项卡getTabCount()
得到选项卡的总个数getTabGravity()
得到 tab 的 GravitygetTabMode()
得到 tab 的模式getTabTextColors()
得到 tab 中文本的颜色newTab()
新建个 tabremoveAllTabs()
移除所有的 tabremoveTab(TabLayout.Tab tab)
移除指定的 tabremoveTabAt(int position)
移除指定位置的 tabsetOnTabSelectedListener(TabLayout.OnTabSelectedListener onTabSelectedListener)
为每个 tab 增加选择监听器setScrollPosition(int position, float positionOffset, boolean updateSelectedText)
设置滚动位置setTabGravity(int gravity)
设置 GravitysetTabMode(int mode)
设置 ModesetTabTextColors(ColorStateList textColor)
设置 tab 中文本的颜色setTabTextColors(int normalColor, int selectedColor)
设置 tab 中文本的颜色 默认 选中setTabsFromPagerAdapter(PagerAdapter adapter)
设置 PagerAdaptersetupWithViewPager(ViewPager viewPager)
和 ViewPager 联动
函数介绍完了,现在来看代码吧!
布局代码:
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:background="#1FBCD2"
android:layout_height="48dp" />
再来看一下 onCreate(Bundle savedInstanceState)
中的方法吧
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab);
tabLayout= (TabLayout) findViewById(R.id.tablayout);
tabLayout.setTabTextColors(Color.WHITE, Color.GRAY);//设置文本在选中和为选中时候的颜色
tabLayout.addTab(tabLayout.newTab().setText("第一个"), true);//添加 Tab,默认选中
tabLayout.addTab(tabLayout.newTab().setText("第二个"),false);//添加 Tab,默认不选中
tabLayout.addTab(tabLayout.newTab().setText("第三个"),false);//添加 Tab,默认不选中
}
来看一下效果吧
现在 我们来把 TabLayout 和 ViewPager 连起来用
先看布局文件 我们在上面的基础上加了个ViewPager
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:background="#1FBCD2"
android:layout_height="48dp" />
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
再来看一下 onCreate(Bundle savedInstanceState)
中的方法吧
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab);
tvs = new ArrayList<TextView>();
for (int i = 0; i < items.length; i++) {
TextView tv = new TextView(this);
tv.setText(items[i]);
LinearLayout.LayoutParams lp =
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
tv.setTextColor(Color.BLACK);
tv.setBackgroundColor(Color.WHITE);
tv.setGravity(Gravity.CENTER);
tv.setLayoutParams(lp);
tv.setTextSize(22);
tvs.add(tv);
}
tabLayout = (TabLayout) findViewById(R.id.tablayout);
tabLayout.setTabTextColors(Color.WHITE, Color.GRAY);//设置文本在选中和为选中时候的颜色
vp = (ViewPager) findViewById(R.id.vp);
adapter = new Adapter();
vp.setAdapter(adapter);
//用来设置tab的,同时也要覆写 PagerAdapter 的 CharSequence getPageTitle(int position) 方法,要不然 Tab 没有 title
tabLayout.setupWithViewPager(vp);
//关联 TabLayout viewpager
tabLayout.setTabsFromPagerAdapter(adapter);
}
看效果图:
Navigation View
大家都记得 DrawerLayout 这个控件吧!它是 android 用来体态 SlideMenu 的一个组件!在这个控件中我们通常需要一个 menu(也是个布局文件)和一个主体布局文件。现在这个 Navigation View 就是用来写 menu的!
这个控件我就不一一写函数了!我们还是直接使用吧!直接看布局文件
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
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:fitsSystemWindows="true">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="哈哈"
android:gravity="center"
android:textSize="30sp"
android:textColor="@android:color/background_dark"/>
</FrameLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/my_navigation_items" />
</android.support.v4.widget.DrawerLayout>
我们直接看 NavigationView ,会发现我使用了两个新的属性 app:headerLayout
和 app:menu
这是因为这个组件把menu分为两部分,一个是头部还有一个是 menu。现在我们只需要写个新的头部和一个 menu就行啦!!这个组件我就不上图了!主要是我认为没啥意思这个组件!
剩下的组件
现在还剩下 CoordinatorLayout
, CollapsingToolbarLayout
和 AppBarLayout
这三个组件!由于我对这个三个组件还没有仔细研究,在这篇博文中就不说了!下篇博文再讲!!
- CoordinatorLayout 是一个超级 FrameLayout
- CollapsingToolbarLayout 类似这张图
- AppBarLayout 全新,用来实现各种 Material Design 概念效果的一个 Layout,主要负责对滑动的响应
以上三个组件的来自 代码家 的这篇博文 Google I/O 2015 为 Android 开发者带来了哪些福利? 的解释!
结束语
不知道大家有没有好的 unity3d 学习方面的资料 求介绍啊 !!!!!!
Android Design Support Library 中控件的使用简单介绍(一)的更多相关文章
- Android Design Support Library使用详解
Android Design Support Library使用详解 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的And ...
- Android开发学习之路-Android Design Support Library使用(CoordinatorLayout的使用)
效果图: 上面的这个图有两个效果是,一个是顶部的图片,在上滑之后会隐藏起来并且显示出一个ToolBar(ToolBar类似于ActionBar,但是只有ToolBar是兼容Material Desig ...
- 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
转自:http://mrfufufu.github.io/android/2015/07/01/Codelab_Android_Design_Support_Library.html [翻]Andro ...
- Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fanc ...
- Android Design Support Library: 学习CoordinatorLayout
简述 CoordinatorLayout字面意思是"协调器布局",它是Design Support Library中提供的一个超级帧布局,帮助我们实现Material Design ...
- Material Design 开发利器:Android Design Support Library 介绍
转自:https://blog.leancloud.cn/3306/ Android 5.0 Lollipop 是迄今为止最重大的一次发布,很大程度上是因为 material design —— 这是 ...
- Android Design Support Library使用详解——Snackbar
Google在2015 I/O大会上,给我们带来了更加详细的Material Design规范,同时也引入了Android Design Support Library,为我们提供了基于Materia ...
- Android Design Support Library——Navigation View
前沿 Android 从5.0开始引入了Material design元素的设计,这种新的设计语言让整个安卓的用户体验焕然一新,google在Android Design Support Librar ...
- Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠
此文的代码在Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果代码的基础上进行修改,如果你没有看过本系列的第一篇文章最好先看一看.Co ...
随机推荐
- C#:向SqlServer数据库中插入imange类型
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServi ...
- tp读取器和写入器
一.读取器 控制器调用如下: //以ID的方式查询数据$user=User::get(3);//查询ID为3的单条数据echo $user->username;//以对象的方式显示对应的字段值 ...
- ubuntu更新出错--Could not get lock /var/lib/dpkg/lock
ubuntu在vps上安装好后,通常第一个命令是更新系统软件.然而在运行的过程中,却出现这样的错误: E: Could not get lock /var/lib/dpkg/lock - open ( ...
- 关于搭配junit 和JUnit报initializationError的解决方法
关于junit是什么就不复述了,网上有 junit的source code是可以下载的,各个版本都有 地址:https://github.com/junit-team 通过junit 的source ...
- mplayer 全屏问题
[root@ok home]# gedit ~/.mplayer/config # Write your default config options here! zoom=yes #加上这个参数!全 ...
- libxml2实例
// libxmlTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #includ ...
- C++之在类内部访问对象的私有成员
一.引言 今天看项目里的一段代码发现,竟然可以再类的成员函数中访问该类的对象的私有成员.感觉不可思议. 自己写的实例代码: #include <iostream> using namesp ...
- matlab_legend_使用
matlab legend 使用 用Matlab画图时,有时候需要对各种图标进行标注,例如,用“+”代表A的运动情况,“*”代表B的 运动情况.legend函数的基本用法是LEGEND(string1 ...
- 分享8个常用的jQuery焦点图插件
现在web网页jquery应用越来越广泛,目前几乎每一个WEB项目都在使用jQuery,因为jQuery插件实在太丰富,尤其是一些图片滑块插件和jQuery焦点图插件,更是多如牛毛,很多初学者只需稍微 ...
- pentestbox使用教程
pentestbox工具列表:https://tools.pentestbox.org/ freebuf入门实战:http://www.freebuf.com/sectool/125881.html ...