有人在用华为哪款机子好用的机子吗

不只是新风格 Android 5.0三大质变详解
  【PConline 杂谈】Android作为市场上用户基数最大的系统,每一次升级都深深影响着整个业界。而谷歌在今年10月15发布的Android 5.0 Lollipop棒棒糖,更是Android史上浓墨重彩的一笔,其升级幅度与影响范围都与以往的版本不可同日而语。今天,笔者就剥离掉Android 5.0中一些常规的增量更新,谈一谈其中&质变&的部分。Android史上的重大升级  就Android系统诞生以来,有过数次重大的更新(仅介绍部分笔者认为对安卓生态有推动力的版本更新,或有缺漏),比如:Android 版本重大更新年表Android 1.6(甜甜圈)开始增加对不同分辨率屏幕的支持&为各尺寸设备爆发奠定基础Android 2.2(冻酸奶)增加了JIT compile(动态直译器)&代码编译速度有了5倍提升Android 2.3(姜饼)增加了对多种智能传感器的支持&为安卓设备智能化奠定基础Android 4.1(果冻豆)增加了Project Butter(黄油计划)&真正改进了安卓的流畅度Android 4.4(奇巧)增加了Android Runtime(ART)模式&从底层上改善了运行效率  以上的所有Android版本,或多或少地都推动了Android系统生态的发展,但鲜少会有同时在外观(界面风格、交互体验)和底层(运行效率,硬件支持)都做出重大升级的版本,而此次的Android 5.0则正是这样幅度的一次更新。接下来笔者会从外在和内在两个层面来解读Android 5.0。表层:谷歌第一次在设计理念上超车  一家公司的产品其实就是公司整体上文化与气质的体现。如果从这个层面上来看,与Android分明就是设计师思维与工程师思维的结晶。Android系统从诞生之初就充斥着一股工程师的极客范儿,整体进化速度虽然不逊iOS,但在整体体验上总是充斥着一股子隔阂与生硬,这从安卓混乱的文件管理系统、权限管理系统、后台机制都能窥得一二,当然这里就不展开讨论了。(如果各位有兴趣,笔者会另开一文来详细说明)  既然是说&第一次在设计理念上超车苹果&,笔者就已经做好了被果粉们喷死的准备。虽然笔者目前仍认为iO的整体设计细节是所有手机中最细致,最完备的;但如果单论设计理念的话,这次谷歌的步子就真的迈得比较大了(至于会不会扯到蛋另说)。既然要聊到谷歌与苹果的理念比较,我们就不得不提iOS系统在iOS6与iOS7时代的一次设计理念变革&&就是从&拟物化设计&变成了&扁平化&设计。&什么是拟物化设计?  拟物设计(Skeuomorphism)指的是一种当旧有设计中某些必需形式在新设计中已不再必要,但新设计仍模仿旧有形式,以达到新设计让人感觉熟悉和亲切的设计方法。具体在领域,其作用就是通过对屏幕界面元素的&拟物化处理&(即上述的&模仿旧有形式&),让人们在屏幕上更容易找到操作方法,更加直观,学习成本更低(即熟悉与亲切)。拟物设计在手机系统中的特征是:由于要实现对旧有设计(现实物品造型与质感)的模仿,所以一般会加入大量高光、纹理、材质、阴影等各种效果,细节非常丰富。什么是扁平化设计?  扁平化设计(Flat Design)指的是通过去掉冗余的高光、纹理、材质、阴影、渐变等装饰效果,让&信息&本身重新作为核心被凸显出来。扁平化设计在手机系统中的特征是:在设计元素上强调抽象、极简、符号化,而在界面上经常以色块、纯字体的形式出现,细节较少。&拟物化设计与扁平化设计实例对比  ●iOS7的&扁平化&其实是拟物化基础上进行的扁平化改造  就如上边提到的,真正意义上的扁平化设计应该是指Windows 8那种整体以文字与抽象图标为主要信息表现手段,以纯色色块作为背景的设计风格。而iOS7上面的图标仍然充满了拟物化的&隐喻&(如仍然模拟时钟走动的Clock图标),而高光与阴影也还有一些保留(如Notes图标上仍表明层次的阴影),而且iOS系统整体的细节丰富程度也不是类似于Window 8那种设计风格可比的。iOS7其实是相对于iOS6的扁平化改造  所以要总结的话,那么iOS7应该是将拟物化设计朝扁平化推进了一小步,将扁平化&极简、抽象&的内功注入到了拟物化基因中,让iOS7的界面相比原来的iOS6时代看起来更加清新,自然,信息层级也因此呈现得更加分明。iOS7并不是完完全全的扁平化设计,因为不管是单纯的&拟物&,还是单纯的&扁平&,都有其劣势所在,只有糅合在一起,才能够达到比较完美的效果。  ●谷歌的rial Design是扁平化设计的&拟物化创新&  说了这么久的iOS,那么总要说说Android了。谷歌的rial Design实际上与iOS7一样,希望用扁平化的内功去凸显信息本身,同时也能够适应目前碎片化的终端设备,但是又不希望失去拟物化所带来的丰富隐喻。所以谷歌走的也是一条糅合这两种风格的路线,只不过谷歌走得比苹果更远一点。  谷歌的Mateial Design,直接创造了一种在现实世界中不存在的物体&&电子化的纸。这种抽象的&电子纸&作为载体的好处,就在于能够同时兼具&扁平化的简洁&与&拟物化的暗喻&。Android 5.0的Material design  首先,纸作为一个载体来讲,对信息的凸显能力是毋庸置疑的,因为现实中的纸本就是内容而存在,所以可以算作是极简的代表形式。其次,&电子化的纸&同时模拟了现实中纸的物理特性,如运动状态、光影层叠效果等,这就让&电子纸&又重新拥有了Window 8那种色块风格所没有的&拟物隐喻&,这对于信息层级与交互设计上都是了不起的理念创新。  ●&电子纸&的概念能够带来些什么?  可能有些朋友还不了解&电子纸&概念的出现对于现有的智能设备界面设计有着怎样的指导意义,下面我粗粗归纳几点,你们感受一下:  1.&电子纸&由于不是真实的纸张,所以在形状与大小上有着无限可能性,可以在界面上任意组合。这对于目前碎片化的终端尺寸有着极好的适应能力。Material Design可以完美兼容于多尺寸设备  2.&电子纸&虽然是创造出的概念,但是谷歌却赋予了其真实纸张的&物理特性&,比如你可以感受到它的不同堆叠层次(通过阴影),你可以感受到它的重量(切换时动画的非线性加速)。这个我们可以来通过观看一个小视频了解:  总的来讲,Material Design其实是对极简风格的一次革新,它完美融入了&拟物化&设计的&物理特性&,使得Android平台的总体视觉与交互变得&温暖&,而不是跟以前一样&冷冰冰&。  从理念上来讲,如果说iOS7是对原有风格的扁平化再造,那Material Design就是植根于扁平化的&拟物化&重生。从扁平化是未来大方向的角度来看,谷歌是不是在立足点上就稍微胜过苹果一丢丢了。(当然理念归理念,到目前为止仍然是苹果将理念实践得最好。谷歌的应用分发市场太过分裂,所以对于应用生态的约束能力也不强,所以就算谷歌有了新理念恐怕也推行不顺,所以我们还是要边走边看)
键盘也能翻页,试试“← →”键
手机论坛帖子排行
最新资讯离线随时看
聊天吐槽赢奖品2120人阅读
Android翻译(3)
原译文在我的github上:
这里是我写的一个小例子,,使用了RecyclerView、CardView、ToolBar等新控件。
这篇只是关于在低版本上使用的方法,更详细的见下篇:。
前排渣翻译预警,如果你能提供更好更专业的翻译或者提出修改意见就好了……
Android 5.0已经发布,带来了新的Material Design,这种新的设计语言提供了更好的视觉体验。为了使旧版本的Android系统也可以使用这种设计,我们扩展了支持包,对其中的进行了重大更新,同时带来了新的,以及库。
这篇文章中我们会介绍一下AppCompat发生了哪些新变化以及如何用它设计Material Design应用.
new in AppCompat?
AppCompat(又叫ActionBarCompat)为4.0前的Android版本提供ActionBar后向兼容。而最新的AppCompat v21则可以提供Android 5.0特性支持。
在这个版本中,Android引入了新的&控件。类似于ActionBar,但是提供了更多的控制权和灵活性。ToolBar就像其他的普通控件一样,因此你可以容易地对其布局、执行动画以及与滚动事件交互。你也可以把它设置成你的Activity的ActionBar——就和原先的ActionBar一样使用。
最新的AppCompat包含了多种Meterial Design样式更新。比如就使用了这些东东.
下面是如何使用它
如果你使用Gradle,把appcompat加入到依赖库。修改你的build.gradle:
dependencies&{
&&&&compile&&com.android.support:appcompat-v7:21.0.+&
如果你的App首次使用AppCompat
如果你没用过AppCompat,那么下面教给你:
所有的Activity必须继承,ActionBarActivity继承自v4包的,因此你仍然可以使用Fragment.
所有theme必须继承Theme.AppCompat——这个主题包含一些不同的子主题,比如Light和NoActionBar。
如果你要inflate一些元素(比如说一个列表)以展示在ActionBar上的话,请确保你使用的是ActionBar的themed context——使用getSupportActionBar().getThemedContext()方法获得这个context。
对MenuItem进行相关操作时,必须的静态方法
For more information, see the Action Bar API guide which is a comprehensive guide on AppCompat. 欲知更多更深入的知识,请看&
如果你的App之前就使用AppCompat
对于大多数的应用来说,你只要在values/里声明一个主题就可以了:
values/themes.xml:
&style&name=&Theme.MyTheme&&parent=&Theme.AppCompat.Light&&
&&&&&!--&Set&AppCompat’s&actionBarStyle&--&
&&&&&item&name=&actionBarStyle&&@style/MyActionBarStyle&/item&
&&&&&!--&Set&AppCompat’s&color&theming&attrs&--&
&&&&&item&name=”colorPrimary”&@color/my_awesome_red&/item&
&&&&&item&name=”colorPrimaryDark”&@color/my_awesome_darker_red&/item&
&&&&&!--&The&rest&of&your&attributes&--&
完了你就可以把values-v14+的ActionBar样式移除了。
AppCompat has support for the new color palette theme attributes which allow you to easily customize your theme to fit your brand with primary and accent colors. For example: AppCompat已经支持新的属性,使用这些属性,你可以很轻易地讲你的应用色调与搭配。举个栗子:
values/themes.xml:
&style&name=&Theme.MyTheme&&parent=&Theme.AppCompat.Light&&
&&&&&!--&colorPrimary&is&used&for&the&default&action&bar&background&--&
&&&&&item&name=”colorPrimary”&@color/my_awesome_color&/item&
&&&&&!--&colorPrimaryDark&is&used&for&the&status&bar&--&
&&&&&item&name=”colorPrimaryDark”&@color/my_awesome_darker_color&/item&
&&&&&!--&colorAccent&is&used&as&the&default&value&for&colorControlActivated,
&&&&&&&&&which&is&used&to&tint&widgets&--&
&&&&&item&name=”colorAccent”&@color/accent&/item&
&&&&&!--&You&can&also&set&colorControlNormal,&colorControlActivated
&&&&&colorControlHighlight,&and&colorSwitchThumbNormal.&--&
在Android 5.0以上系统上,设置了上面这些后,跟使用了Material主题一样了,你不必单独设置Material主题,它会自动修改状态栏、最近运行屏幕等的颜色。
而在早期版本中,AppCompat会尽可能的模拟Material色彩主题。现阶段时能作用于ActionBar和某些组件上——也就是说,对于以前版本的Android系统来说,就算使用了AppCompat也不可能实现所有的Android 5.0样式。
Widget着色(Widget
当设备的版本在Android 5.0以上时,所有的组件都会使用我们刚才设置的主题颜色进行着色,这是因为Android 5.0支持正面这两种特性(5.0之前系统的悲剧):drawable着色(drawable tinting)和在drawable中引用主题属性(使用?attr/xxx方式)。
对于早期版本的Android系统,AppCompat为下列UI组件提供了类似的行为。
AppCompat’s toolbar中的一切 (action modes等等)
RadioButton
Switch (要使用新的)
CheckedTextView
AppCompat会帮助你实现这些行为,你完全不需要插手(有些要注意的地方,看下面的FAQ)。
Toolbar组件
AppCompat支持完全特性的Toolbar组件————和Android5.0系统的Toolbar完全一样。要两种使用ToolBar的方式:
如果你想要使用现有的ActionBar功能(比如使用菜单、ActionBarDrawerToggle等等)同时又想自己掌握它的样式,那么你可以把ToolBar用作ActionBar。
对于一些ActionBar所不支持的场景——比如说在同一屏幕上使用多个ToolBar、使用低于屏幕宽度的尺寸的ToolBar等等(看上图就知道了)——你就要使用ToolBar了。
要将ToolBar用作ActionBar,首先要禁用系统ActionBar,最方便的方式是使用Theme.AppCompat.NoActionBar主题(或者light版的NoActionBar).
然后创建一个ToolBar实例,通常是写在XML里。
&android.support.v7.widget.Toolbar
&&&&android:id=”@+id/my_awesome_toolbar”
&&&&android:layout_height=”wrap_content”
&&&&android:layout_width=”match_parent”
&&&&android:minHeight=”?attr/actionBarSize”
&&&&android:background=”?attr/colorPrimary”&/&
宽、高、背景等你完全可以自定义;由于ToolBar只是一个ViewGroup,因此你可以任意定义它的样式的位置。
然后在Activity里面将ToolBar设置为ActionBar就行了:
public&void&onCreate(Bundle&savedInstanceState)&{
&&&&super.onCreate(savedInstanceState);
&&&&setContentView(R.layout.blah);
&&&&Toolbar&toolbar&=&(Toolbar)&findViewById(R.id.my_awesome_toolbar);
&&&&setSupportActionBar(toolbar);
然后options menu就会显示在ToolBar上了。
Standalone
standalone模式与actionbar模式的不同是你不必setSupportActionBar了,把它当一个普通组件看待就好,也不必非得把ActionBar给禁用了。
standalone模式下,你就得手动设置ToolBar的内容和动作了。比如说,如果你想让它显示一个动作按钮(就像Actoinbar一样,但不是actionbar模式),你可以这么做:
public&void&onCreate(Bundle&savedInstanceState)&{
&&&&super.onCreate(savedInstanceState);
&&&&setContentView(R.layout.blah);
&&&&Toolbar&toolbar&=&(Toolbar)&findViewById(R.id.my_awesome_toolbar);
&&&&//&Set&an&OnMenuItemClickListener&to&handle&menu&item&clicks
&&&&toolbar.setOnMenuItemClickListener(new&Toolbar.OnMenuItemClickListener()&{
&&&&&&&&@Override
&&&&&&&&public&boolean&onMenuItemClick(MenuItem&item)&{
&&&&&&&&&&&&//&Handle&the&menu&item
&&&&&&&&&&&&return&
&&&&//&Inflate&a&menu&to&be&displayed&in&the&toolbar
&&&&toolbar.inflateMenu(R.menu.your_toolbar_menu);
ToolBar还支持很多其他功能,欲知更多,请查看。
ToolBar的样式的设置方式和标准的ActionBar是不一样的,ToolBar的样式是直接设置在这个View上的。
下面是一个要作为ActionBar使用的ToolBar的基本样式。
&android.support.v7.widget.Toolbar&&
&&&&android:layout_height=&wrap_content&
&&&&android:layout_width=&match_parent&
&&&&android:minHeight=&?attr/actionBarSize&
&&&&app:theme=&@style/ThemeOverlay.AppCompat.ActionBar&&/&
app:theme可以确保你的文本的里面的items使用solid colors。
DarkActionBar
你也可以直接通过而已属性设置ToolBar的Style。要得到一个看起来像'DarkActionBar'(深色内容、浅色菜单)样式的ToolBar,可以像下面设置theme和popupTheme属性:
&android.support.v7.widget.Toolbar
&&&&android:layout_height=”wrap_content”
&&&&android:layout_width=”match_parent”
&&&&android:minHeight=”@dimen/triple_height_toolbar”
&&&&app:theme=&@style/ThemeOverlay.AppCompat.Dark.ActionBar&
&&&&app:popupTheme=&@style/ThemeOverlay.AppCompat.Light&&/&
SearchView
AppCompat提供了最新与Lollipop一样的SearchView样式和API,使其具有更强的可定制性(此处应该有掌声).
你应该这样定义SearchView的样式:
values/themes.xml:
&style&name=”Theme.MyTheme”&parent=”Theme.AppCompat”&
&&&&&item&name=”searchViewStyle”&@style/MySearchViewStyle&/item&
&style&name=”MySearchViewStyle”&parent=”Widget.AppCompat.SearchView”&
&&&&&!--&Background&for&the&search&query&section&(e.g.&EditText)&--&
&&&&&item&name=&queryBackground&&...&/item&
&&&&&!--&Background&for&the&actions&section&(e.g.&voice,&submit)&--&
&&&&&item&name=&submitBackground&&...&/item&
&&&&&!--&Close&button&icon&--&
&&&&&item&name=&closeIcon&&...&/item&
&&&&&!--&Search&button&icon&--&
&&&&&item&name=&searchIcon&&...&/item&
&&&&&!--&Go/commit&button&icon&--&
&&&&&item&name=&goIcon&&...&/item&
&&&&&!--&Voice&search&button&icon&--&
&&&&&item&name=&voiceIcon&&...&/item&
&&&&&!--&Commit&icon&shown&in&the&query&suggestion&row&--&
&&&&&item&name=&commitIcon&&...&/item&
&&&&&!--&Layout&for&query&suggestion&rows&--&
&&&&&item&name=&suggestionRowLayout&&...&/item&
你不必设置所有上面的属性,甚至一个都不设置也行,默认的就很不错。
希望这篇文章能让你学会使用AppCompat并开发出牛逼的Material Design风格的app。
为啥我的老Android系统上的EditText(或者上面提到的支持的控件)长得不像Material风格呢?
AppCompat的工作原理是拦截layout inflation并且在对应的位置插件一个特殊的可使用Material样式的组件(tint-aware version of the widget)来实现的。对于大部分人来说这应该没啥问题,但是下面几种情况有可能导致一些问题:
你使用自己的自定义的widget(比如使用的自定义的继承了EditText的类)。
你创建EditText的时候没有给它LayoutInflater(比如直接New EditText())
这些特殊的组件目前被我们藏起来了,因为还没有完全做完。以后可能会好点……
为何某某组件在我的老Android系统上长得不像Material风格?
目前AppCompat只支持常用的组件的Material主题,其他的以后会有的。
为啥我的ActionBar在Android
5.0上的阴影,我已经把android:windowContentOverlay设置为null了啊?
Android 5.0上,ActionBar的阴影是由最新的elevation API提供的。如果不想要它,可以使用getSupportActionBar().setElevation(0)方法,或者在Action Bar style里面修改elevation属性。
为啥我的老版本Android没有波纹效果?
这东西只有用Android 5.0最新的RenderThread才能跑流畅,为了不让你卡出翔,我们现在还是先不给老版本支持这玩意儿。
我使用了AppCompat后还能用Preference么?
在API v11+版本的机器上,你仍然可以在ActionBarActivity中使用PreferenceFragment。对于更老的老爷机来说,你只能使用普通的非Material样式的PreferenceActivity。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:12822次
排名:千里之外
(1)(1)(8)(1)Android5.0 新特性学习总结
低版本android上实现Material design应用
5.0版本,推出了Material Design的概念,这是在设计上Android的又一大突破。对应的程序实现上就有如 Theme.Material.Light、 Theme.Material.Light.DarkActionBar等主题,但是这种风格的主题只能应用在在5.0版本的手机,如果在5.0之前应用Material Design该怎么办呢?
google官方,以及一些大牛,给我们提供了一些程序来兼容5.0之前的版本,常用的包如下:
'com.android.support:appcompat-v7:22.+', // 这个包是为了考虑API level 7(即Android 2.1)及以上版本而设计的,v7里默认包含了v4包,v7支持了Action Bar以及一些Theme的兼容。
'com.android.support:recyclerview-v7:22.+', // 当你list中的元素经常动态改变时可以使用RecyclerView控件。它提供了如下两个功能:1、为每个条目位置提供了layout管理器(RecyclerView.setLayoutManager)2、为每个条目设置了操作动画(RecyclerView.setItemAnimator)
'com.android.support:cardview-v7:22.+' // 卡片式视图,允许你在Card视图中显示信息, CardView也可以设置阴影和圆角。
Material Design的Theme
md的主题有:
@android:style/Theme.Material (dark version)
@android:style/Theme.Material.Light (light version)
@android:style/Theme.Material.Light.DarkActionBar
appcompat-v7中与之对应的Compat Theme:
Theme.AppCompat
Theme.AppCompat.Light
Theme.AppCompat.Light.DarkActionBar
我们可以根据我们的app的风格,去定制Color Palette(调色板),重点有以下几个属性:
value/styles.xml:
Android4.2下效果:
Android5.0下效果:
ToolBar的使用
众所周知,在使用ActionBar的时候,一堆的问题:这个文字能不能定制,位置能不能改变,图标的间距怎么控制神马的,由此暴露出了ActionBar设计的不灵活。为此官方提供了ToolBar,并且提供了supprot library用于向下兼容。Toolbar之所以灵活,是因为它其实就是一个ViewGroup,我们在使用的时候和普通的组件一样,在布局文件中声明。
(1)ToolBar的引入
1)隐藏原本的ActionBar
隐藏可以通过修改我们继承的主题为:Theme.AppCompat.Light.NoActionBar,如styles.xml:
当然也可以通过设置以下属性完成:
2)布局文件中声明:
可以看到Toolbar外面包裹了一层AppBarLayout,AppBarLayout 是android.support.design库提供的控件,详情请见下面Android Design Support Library的介绍。
Android Design Support Library
Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件。最重要的是,Android Design Support Library的兼容性更广,直接可以向下兼容到Android 2.2。这不得不说是一个良心之作。
使用Support Library非常简单:
'com.android.support:design:22.+', // 这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android 2.1 。 这些组件在我看来就是对 Github中最近比较火的 android 组件进行了封装。
Snackbar轻量级弹窗
Snackbar提供了一个介于Toast和AlertDialog之间轻量级控件,它可以很方便的提供消息的提示和动作反馈。
Snackbar.make(view, &Snackbar comes out&, Snackbar.LENGTH_LONG)
.setAction(&Action&,
new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(HYMainActivity.this, &Toast comes out&, Toast.LENGTH_SHORT).show();
TextInputLayout增强型文本输入
TextInputLayout作为一个父容器控件,包装了新的EditText。通常,单独的EditText会在用户输入第一个字母之后隐藏hint提示信息,但是现在你可以使用TextInputLayout 来将EditText封装起来,提示信息会变成一个显示在EditText之上的floating label,这样用户就始终知道他们现在输入的是什么。同时,如果给EditText增加监听,还可以给它增加更多的floating label。
final TextInputLayout textInputLayout = (TextInputLayout) getActivity().findViewById(R.id.til_pwd);
EditText editText = textInputLayout.getEditText();
textInputLayout.setHint(&请输入密码&);
editText.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if (s.length() & 10 || s.length() & 6) {
textInputLayout.setError(&请输入6之10位数密码&);
textInputLayout.setErrorEnabled(true);
textInputLayout.setErrorEnabled(false);
public void onTextChanged(CharSequence s, int start, int before, int count) {
textView.setText(s);
public void afterTextChanged(Editable s) {
这里需要注意的是,TextInputLayout的颜色来自style中的colorAccent的颜色。
Floating Action Button界面操作按钮
floating action button 是一个负责显示界面基本操作的圆形按钮。Design library中的FloatingActionButton 实现了一个默认颜色为主题中colorAccent的悬浮操作按钮。FloatingActionButton继承自ImageView,你可以使用android:src或者ImageView的任意方法,比如setImageDrawable()来设置FloatingActionButton里面的图标。
TabLayout滑动切换布局
Design library的TabLayout 既实现了固定的选项卡 - view的宽度平均分配,也实现了可滚动的选项卡 - view宽度不固定同时可以横向滚动。选项卡可以在程序中动态添加:
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.addTab(tabLayout.newTab().setText(&tab1&)); tabLayout.addTab(tabLayout.newTab().setText(&tab2&));
但大部分时间我们都不会这样用,通常滑动布局都会和ViewPager配合起来使用,只需要使用tabLayout.setupWithViewPager(mViewPager);就把两个关联起来了。
Google提供了NavigationView来实现导航菜单界面,其中最重要的就是这两个属性:
app:headerLayout
通过这两个属性,我们可以非常方便的指定导航界面的头布局和菜单布局:在低版本Android上使用Material Design -
在低版本Android上使用Material Design
原译文在我的github上:
这里有个关于MaterialDesign的小例子。。
这篇只是关于在低版本上使用的方法,更详细的见下篇:如何在你的App中应用Material Design设计风格。
前排渣翻译预警,如果你能提供更好更专业的翻译或者提出修改意见就好了……
Android 5.0已经发布,带来了新的Material Design,这种新的设计语言提供了更好的视觉体验。为了使旧版本的Android系统也可以使用这种设计,我们扩展了支持包,对其中的进行了重大更新,同时带来了新的,以及库。
这篇文章中我们会介绍一下AppCompat发生了哪些新变化以及如何用它设计Material Design应用.
What's new in AppCompat?
AppCompat(又叫ActionBarCompat)为4.0前的Android版本提供ActionBar后向兼容。而最新的AppCompat v21则可以提供Android 5.0特性支持。
在这个版本中,Android引入了新的 控件。类似于ActionBar,但是提供了更多的控制权和灵活性。ToolBar就像其他的普通控件一样,因此你可以容易地对其布局、执行动画以及与滚动事件交互。你也可以把它设置成你的Activity的ActionBar——就和原先的ActionBar一样使用。
最新的AppCompat包含了多种Meterial Design样式更新。比如就使用了这些东东.
下面是如何使用它
如果你使用Gradle,把appcompat加入到依赖库。修改你的build.gradle:
dependencies {
compile "com.android.support:appcompat-v7:21.0.+"
如果你的App首次使用AppCompat
如果你没用过AppCompat,那么下面教给你:
所有的Activity必须继承,ActionBarActivity继承自v4包的,因此你仍然可以使用Fragment.
所有theme必须继承Theme.AppCompat——这个主题包含一些不同的子主题,比如Light和NoActionBar。
如果你要inflate一些元素(比如说一个列表)以展示在ActionBar上的话,请确保你使用的是ActionBar的themed context——使用getSupportActionBar().getThemedContext()方法获得这个context。
对MenuItem进行相关操作时,必须的静态方法
For more information, see the Action Bar API guide which is a comprehensive guide on AppCompat. 欲知更多更深入的知识,请看
如果你的App之前就使用AppCompat
对于大多数的应用来说,你只要在values/里声明一个主题就可以了:
values/themes.xml:
&style name="Theme.MyTheme" parent="Theme.AppCompat.Light"&
&!-- Set AppCompat’s actionBarStyle --&
&item name="actionBarStyle"&@style/MyActionBarStyle&/item&
&!-- Set AppCompat’s color theming attrs --&
&item name=”colorPrimary”&@color/my_awesome_red&/item&
&item name=”colorPrimaryDark”&@color/my_awesome_darker_red&/item&
&!-- The rest of your attributes --&
完了你就可以把values-v14+的ActionBar样式移除了。
AppCompat has support for the new color palette theme attributes which allow you to easily customize your theme to fit your brand with primary and accent colors. For example: AppCompat已经支持新的属性,使用这些属性,你可以很轻易地讲你的应用色调与搭配。举个栗子:
values/themes.xml:
&style name="Theme.MyTheme" parent="Theme.AppCompat.Light"&
&!-- colorPrimary is used for the default action bar background --&
&item name=”colorPrimary”&@color/my_awesome_color&/item&
&!-- colorPrimaryDark is used for the status bar --&
&item name=”colorPrimaryDark”&@color/my_awesome_darker_color&/item&
&!-- colorAccent is used as the default value for colorControlActivated,
which is used to tint widgets --&
&item name=”colorAccent”&@color/accent&/item&
&!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight, and colorSwitchThumbNormal. --&
在Android 5.0以上系统上,设置了上面这些后,跟使用了Material主题一样了,你不必单独设置Material主题,它会自动修改状态栏、最近运行屏幕等的颜色。
而在早期版本中,AppCompat会尽可能的模拟Material色彩主题。现阶段时能作用于ActionBar和某些组件上——也就是说,对于以前版本的Android系统来说,就算使用了AppCompat也不可能实现所有的Android 5.0样式。
Widget着色(Widget tinting)
当设备的版本在Android 5.0以上时,所有的组件都会使用我们刚才设置的主题颜色进行着色,这是因为Android 5.0支持正面这两种特性(5.0之前系统的悲剧):drawable着色(drawable tinting)和在drawable中引用主题属性(使用?attr/xxx方式)。
对于早期版本的Android系统,AppCompat为下列UI组件提供了类似的行为。
AppCompat’s toolbar中的一切 (action modes等等)
RadioButton
Switch (要使用新的)
CheckedTextView
AppCompat会帮助你实现这些行为,你完全不需要插手(有些要注意的地方,看下面的FAQ)。
Toolbar组件
AppCompat支持完全特性的Toolbar组件————和Android5.0系统的Toolbar完全一样。要两种使用ToolBar的方式:
如果你想要使用现有的ActionBar功能(比如使用菜单、ActionBarDrawerToggle等等)同时又想自己掌握它的样式,那么你可以把ToolBar用作ActionBar。
对于一些ActionBar所不支持的场景——比如说在同一屏幕上使用多个ToolBar、使用低于屏幕宽度的尺寸的ToolBar等等(看上图就知道了)——你就要使用ToolBar了。
Action Bar
要将ToolBar用作ActionBar,首先要禁用系统ActionBar,最方便的方式是使用Theme.AppCompat.NoActionBar主题(或者light版的NoActionBar).
然后创建一个ToolBar实例,通常是写在XML里。
&android.support.v7.widget.Toolbar
android:id=”@+id/my_awesome_toolbar”
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:minHeight=”?attr/actionBarSize”
android:background=”?attr/colorPrimary” /&
宽、高、背景等你完全可以自定义;由于ToolBar只是一个ViewGroup,因此你可以任意定义它的样式的位置。
然后在Activity里面将ToolBar设置为ActionBar就行了:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
然后options menu就会显示在ToolBar上了。
Standalone
standalone模式与actionbar模式的不同是你不必setSupportActionBar了,把它当一个普通组件看待就好,也不必非得把ActionBar给禁用了。
standalone模式下,你就得手动设置ToolBar的内容和动作了。比如说,如果你想让它显示一个动作按钮(就像Actoinbar一样,但不是actionbar模式),你可以这么做:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
// Set an OnMenuItemClickListener to handle menu item clicks
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
// Handle the menu item
// Inflate a menu to be displayed in the toolbar
toolbar.inflateMenu(R.menu.your_toolbar_menu);
ToolBar还支持很多其他功能,欲知更多,请查看。
ToolBar的样式的设置方式和标准的ActionBar是不一样的,ToolBar的样式是直接设置在这个View上的。
下面是一个要作为ActionBar使用的ToolBar的基本样式。
&android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" /&
app:theme可以确保你的文本的里面的items使用solid colors。
DarkActionBar
你也可以直接通过而已属性设置ToolBar的Style。要得到一个看起来像'DarkActionBar'(深色内容、浅色菜单)样式的ToolBar,可以像下面设置theme和popupTheme属性:
&android.support.v7.widget.Toolbar
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:/triple_height_toolbar”
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /&
SearchView Widget
AppCompat提供了最新与Lollipop一样的SearchView样式和API,使其具有更强的可定制性(此处应该有掌声).
你应该这样定义SearchView的样式:
values/themes.xml:
&style name=”Theme.MyTheme” parent=”Theme.AppCompat”&
&item name=”searchViewStyle”&@style/MySearchViewStyle&/item&
&style name=”MySearchViewStyle” parent=”Widget.AppCompat.SearchView”&
&!-- Background for the search query section (e.g. EditText) --&
&item name="queryBackground"&...&/item&
&!-- Background for the actions section (e.g. voice, submit) --&
&item name="submitBackground"&...&/item&
&!-- Close button icon --&
&item name="closeIcon"&...&/item&
&!-- Search button icon --&
&item name="searchIcon"&...&/item&
&!-- Go/commit button icon --&
&item name="goIcon"&...&/item&
&!-- Voice search button icon --&
&item name="voiceIcon"&...&/item&
&!-- Commit icon shown in the query suggestion row --&
&item name="commitIcon"&...&/item&
&!-- Layout for query suggestion rows --&
&item name="suggestionRowLayout"&...&/item&
你不必设置所有上面的属性,甚至一个都不设置也行,默认的就很不错。
希望这篇文章能让你学会使用AppCompat并开发出牛逼的Material Design风格的app。
为啥我的老Android系统上的EditText(或者上面提到的支持的控件)长得不像Material风格呢?
AppCompat的工作原理是拦截layout inflation并且在对应的位置插件一个特殊的可使用Material样式的组件(tint-aware version of the widget)来实现的。对于大部分人来说这应该没啥问题,但是下面几种情况有可能导致一些问题:
你使用自己的自定义的widget(比如使用的自定义的继承了EditText的类)。
你创建EditText的时候没有给它LayoutInflater(比如直接New EditText())
这些特殊的组件目前被我们藏起来了,因为还没有完全做完。以后可能会好点……
为何某某组件在我的老Android系统上长得不像Material风格?
目前AppCompat只支持常用的组件的Material主题,其他的以后会有的。
为啥我的ActionBar在Android 5.0上的阴影,我已经把android:windowContentOverlay设置为null了啊?
Android 5.0上,ActionBar的阴影是由最新的elevation API提供的。如果不想要它,可以使用getSupportActionBar().setElevation(0)方法,或者在Action Bar style里面修改elevation属性。
为啥我的老版本Android没有波纹效果?
这东西只有用Android 5.0最新的RenderThread才能跑流畅,为了不让你卡出翔,我们现在还是先不给老版本支持这玩意儿。
我使用了AppCompat后还能用Preference么?
在API v11+版本的机器上,你仍然可以在ActionBarActivity中使用PreferenceFragment。对于更老的老爷机来说,你只能使用普通的非Material样式的PreferenceActivity。
更多相关文章
Material Design真的很好看,动画效果真的很实用.前面也写了一些文章介绍如何编写Material风格的程序,但是很多都是一些新的api,低版本上面没有这些api,我们没办法使用.但是不用气馁,google官方,以及一些大牛,给我们提供了一些程序,让我们在低版本上面可以实现Materia ...
Android Material Design向下兼容至低版本Android SDK设备 新版的Android Material Design增加了一些很多有趣.有意思的设计元素和风格,比如最近比较常见的Floating Action Button等等.这在新版的Android L,Andro ...
转载请注明出处,本文来自点击这里投我一票吧. 我正在参加博客之星,博客地址,谢谢~
前言 自从Android 5.0问世以后,它的UI风格受到了大家普遍的赞美,简单.动感十足,但是由于工作比较忙,本人对于Android 5.0并没有太多的关注.前几天在知名博主任玉刚 (
猛击此去for ...
前言 自从Android 5.0问世以后,它的UI风格受到了大家普遍的赞美,简单.动感十足,但是由于工作比较忙,本人对于Android 5.0并没有太多的关注.前几天在知名博主任玉刚 (
博客地址 ) 帅哥的群中有同学问到实现Android 5.0 Material Design中的点击任意Vie ...
一.前言 Android 5.0上线有一个段时间了,估计小伙伴们都看到了Android5.0界面上相比前面几个版本有了很大的突破,给人一种非常酷炫,平滑的跳转,生动的界面切换,全新的感觉,Android用户终于可以感叹,Google升级了这么多个版本终于像样的搞了一回界面.开发者们看到这些优美的动画 ...
1.DPR: Delphi Project文件,包含了Pascal代码.应用系统的工程文件2.PAS: Pascal文件,Pascal单元的源代码,可以是与窗体有关的单元或是独立的单元.3.DFM:Delphi Fo ...
根据 /articles/7RbU3i ,应该是没有显式地import相关module. 运行exe的时候提示缺什么模块就import什么模块,并在代码里面显示的调用一次
理论基础:贝叶斯定理和条件独立性假设 一.优缺点
cookie:采用的是客户端保存信息: 用户访问站点时,Web服务器发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie.用户的浏览器在获得页面的同时还得到了这个 Cookie,并且将它保存在用户硬 ...
PHP中,某些时候,需要设置一个全局的变量.这个全局变量可以设置在环境变量中. 在PHP中 ...
友情链接:
管理员邮箱:info@

我要回帖

更多关于 华为哪个机子待机好 的文章

 

随机推荐