让你的程序实现MaterialDesign风格

news/2024/7/5 1:59:41

原文链接:http://android-developers.blogspot.sg/2014/10/implementing-material-design-in-your.html

材料设计 是一个全面的方法来可视化、交互和运动设计的多屏幕的世界。 Android 5.0棒棒糖和更新的支持库帮助您创建ui。 这里有一个破旧的一些材料设计和api的主要元素和小部件,您可以使用它们来实现它们 你的应用 

有形的表面

在材料设计、ui是由数字 纸张和油墨 。 表面和阴影他们提供视觉线索的结构应用程序,你可以触摸和如何移动。 这个数字材料可以移动,扩大和改革创建灵活的用户界面。

阴影

一个表面的位置和深度导致细微变化照明和阴影。 新高程属性允许您指定一个视图框架z轴上的立场,然后投射一个实时动态阴影背后的物品。 你可以设置高程以声明的方式在你的布局,定义在下降:

<ImageView …
    android:elevation="8dp" />

你也可以设置从代码使用 getElevation()/ setElevation() (与垫片 ViewCompat )。 影子投视图定义的轮廓,默认情况下是源自其背景。 例如,如果你设置一个圆形可拉的背景 浮动操作按钮 ,然后将一个适当的影子。 如果你需要更好的控制一个视图的影子,你可以设置一个 ViewOutlineProvider 可定制 大纲 在 getOutline() 

卡片

卡片 是一种常见的模式创建表面持有截然不同的信息。 新 CardView 支持库允许您轻松地创建它们,为你提供轮廓和阴影(相当于行为之前平台上)。

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <!-- Your card content -->

</android.support.v7.widget.CardView>

CardView 扩展 FrameLayout 并提供默认高度和圆角半径对你这卡有一个一致的外观平台。 你可以定制这些通过cardElevation 和 cardCornerRadius 属性,如果需要的话。 注意卡并不是唯一的方式实现维数和你应该提防 over-cardifying你的界面!

Print-like设计

材料利用经典原则从印刷设计创造干净、简单的布局,把你的内容前面和中心。 大胆的深思熟虑的颜色选择,故意空格、雅致的排版和强大基线网格创建层次结构、意义和焦点。

排版

Android 5.0更新系统字体Roboto漂亮和清楚地显示文本无论显示大小。 添加了一个新的媒介重量( android:fontFamily = " sans-serif-medium " )和新TextAppearance风格实现建议 排版规模 为平衡内容密度和阅读舒适。 例如您可以很容易地使用“标题”样式的设置 android:textAppearance = " @android:风格/ TextAppearance.Material.Title” 。 这些样式可以在旧平台通过AppCompat支持库,如。” @style / TextAppearance.AppCompat.Title ”。

颜色

应用程序的 调色板 让品牌和个性应用程序我们已经使它简单的彩色化UI控件通过以下主题属性:

  • colorPrimary 。 这个应用程序的主要品牌颜色;用作操作栏的背景,最近任务标题和边缘效应。
  • colorAccent 。 充满活力的补充主要品牌的颜色。 应用于框架控件(比如EditText和开关。
  • colorPrimaryDark 。 深一点儿的主要品牌颜色;应用到状态栏。

进一步的属性让细粒度控制着色控制,见: colorControlNormal colorControlActivated colorControlHighlight ,colorButtonNormal colorSwitchThumbNormal colorEdgeEffect statusBarColor 和 navigationBarColor 

AppCompat提供了一个大的子集上面的功能,允许您再着色控制pre-Lollipop平台。

动态颜色

材料设计鼓励动态颜色的使用,尤其是当你有丰富的图片。 新的面板支持库允许您从图像中提取少量的颜色风格匹配你的UI控件;创建一个身临其境的体验。 提取的调色板将包括充满活力和柔和的色调以及前景文本颜色最佳的易读性。 例如:

Palette.generateAsync(bitmap,
        new Palette.PaletteAsyncListener() {
    @Override
    public void onGenerated(Palette palette) {
         Palette.Swatch vibrant =
                 palette.getVibrantSwatch();
          if (swatch != null) {
              // If we have a vibrant color
              // update the title TextView
              titleView.setBackgroundColor(
                  vibrant.getRgb());
              titleView.setTextColor(
                  vibrant.getTitleTextColor());
          }
    }
});

真实的运动

有形的表面并不是凭空出现的,像一个跳越剪辑电影;他们进入地方帮助集中注意力,建立空间关系和保持连续性。 材料响应触摸确认您的交互和从你的触点向外辐射的所有更改。 所有运动都是有意义的和亲密,协助用户的理解。

活动+片段转换

通过声明“共享元素”,是常见的在两个屏幕可以创建两种状态之间的平稳过渡。

album_grid.xml
…
    <ImageView
        …
        android:transitionName="@string/transition_album_cover" />
album_details.xml
…
    <ImageView
        …
        android:transitionName="@string/transition_album_cover" />

AlbumActivity.java
Intent intent = new Intent();
String transitionName = getString(R.string.transition_album_cover);
…
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
    albumCoverImageView,   // The view which starts the transition
    transitionName    // The transitionName of the view we’re transitioning to
    );
ActivityCompat.startActivity(activity, intent, options.toBundle());

这里我们定义相同 transitionName 在两个屏幕。 当开始新的活动,这种转变是自动动画。 除了共同的元素,你也可以编排 进入和 退出 元素。

涟漪

材料响应用户的联系一个墨涟漪 表面反应 。 交互控件,如按钮表现出这种行为默认情况下当你使用或继承 Theme.Material (如将 ? android:selectableItemBackground )。 你可以添加这个反馈自己的画板通过包装在涟漪元素:

<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/accent_dark">
    <item>
        <shape
            android:shape="oval">
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>

自定义视图应该传播触摸位置的画板 视图# drawableHotspotChanged 回调的波纹从触点可以开始。

StateListAnimator

材料也回复联系 提高了 为了满足你的手指,像一个磁引力。 你可以实现这种效果的动画translationZ属性类似于高程,但用于瞬态使用;这样 Z =海拔+ translationZ 。 新 stateListAnimator 属性允许您轻松地动画 translationZ 在触摸(按钮默认这样做):

layout/your_layout.xml
<ImageButton …
    android:stateListAnimator="@anim/raise" />
anim/raise.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:state_pressed="true">
        <objectAnimator
            android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ"
            android:valueTo="@dimen/touch_raise"
            android:valueType="floatType" />
    </item>
    <item>
        <objectAnimator
            android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ"
            android:valueTo="0dp"
            android:valueType="floatType" />
    </item>
</selector>

揭示

材料过渡标志显示新的内容是揭示它与不断扩大的圆形面具。 这有助于加强用户的接触点过渡的开始,与辐射的影响 向外放射 。 您可以使用以下动画师:实现这个

Animator reveal = ViewAnimationUtils.createCircularReveal(
                    viewToReveal, // The new View to reveal
                    centerX,      // x co-ordinate to start the mask from
                    centerY,      // y co-ordinate to start the mask from
                    startRadius,  // radius of the starting mask
                    endRadius);   // radius of the final mask
reveal.start();

插入器

运动应该是深思熟虑的,迅速而精确。 不像典型的ease-in-ease-out过渡,在材料设计中,对象往往开始快速缓解到最终位置。 对象的动画,花更多的时间在它的最终目的地。 结果,用户不离开等待动画完成,和运动的负面影响最小化。 一个新的 fast-in-slow-out插入器 已添加到实现这一运动。

进入和退出屏幕(元素 在峰值速度应该这么做吗 ),检查 linear-out-slow-in 和 fast-out-linear-in 分别插入器。

自适应设计

我们最后的核心材料是创建一个自适应的概念设计工作在所有大小和形状的设备,从手表到巨大的电视。 适应性设计技术帮助我们意识到每个设备的视觉反映出不同的看法相同的底层系统。 每个视图定制适合的大小和交互设备。 颜色、肖像、层次结构和空间关系保持不变。 材料设计系统提供了灵活的组件和模式来帮助你建立一个尺度的设计。

工具栏

工具栏是一个泛化的动作栏模式,提供类似的功能,但更大的灵活性。 与标准动作栏、工具栏是一个视图层次结构就像任何其他,所以你只要你喜欢,可以将实例交错与你其他的观点,动画,对滚动事件等等。 你可以使工具栏作为活动的操作栏通过调用Activity.setActionBar()。

在这个例子中,蓝色的工具栏是一个扩展的高度,屏幕上覆盖的内容和提供的导航按钮。 注意,使用两个工具栏列表和详细视图。

实现工具栏的详细信息,请参见 这篇文章 

出去和实现

材料设计帮助您构建可以理解的,美丽的和自适应的应用,是活着的运动。 希望这篇文章启发了你将这些原则应用到你的应用和标示的一些新(兼容性)api来实现这一目标。


http://www.niftyadmin.cn/n/4581752.html

相关文章

R7 3700x配什么主板

AMD锐龙R7 3700X采用了目前最先进的7纳米工艺制程&#xff0c;采用依然基于AM4接口设计&#xff0c;这也是AMD良心的一面&#xff0c;方便锐龙平台老用户进行升级。 R7 3700x配什么主板看完你就知道了 https://list.jd.com/list.html? 拥有8核16线程&#xff0c;基础频率3.6GH…

R7 3700X和R7 2700X 的区别

AMD锐龙R7-3700X基于目前最为先进的台积电7纳米工艺的Zen2架构设计&#xff0c;核心代号为Matisse&#xff0c;接口类型依然为AM4&#xff0c;拥有8核16线程&#xff0c;基础频率为3.6GHz&#xff0c;加速频率为4.4GHz&#xff0c;拥有三级缓存高达32MB&#xff0c;4MB二级缓存…

使用RxPermission框架对android6.0权限进行检测

可前往Github上进行查看相关DEMO https://github.com/tbruyelle/RxPermissions 如果想用RxPermission&#xff0c;minSdkVersion 必须大于等于9. 在gradle中添加如下代码 repositories {jcenter() // If not already there }dependencies {compile com.tbruyelle.rxpermiss…

GitLab 简单几步完成下载上传

文章针对 初次使用GitLab管理代码的developer角色的同学首先&#xff1a;从服务器下载代码到本地1&#xff1a;下载Git 2&#xff1a;下载TortioseGit 在官网可以下载对应的中文语言包安装3&#xff1a;点击GitLab对应项目内复制URL链接4&#xff1a;在开发项目的地方 右键点击…

【sgUploadTray】上传托盘自定义组件,可实时查看上传列表进度

【sgUploadTray】上传托盘自定义组件&#xff0c;可实时查看上传列表进度 特性&#xff1a; 可以全屏可以还原尺寸可以最小化可以回到右下角默认位置支持删除队列数据 sgUploadTray源码 <template><div :class"$options.name" :show"show" :size…

RTX3090和RTX A6000 的区别 哪个好

RTX 3090新显卡&#xff0c;采用7纳米制程工艺&#xff0c;拥有着24GB的大显存&#xff0c;显存规格是GDDR6X&#xff0c;显存速率达到了19.5Gbps&#xff0c;5248 CUDA内核&#xff0c;显存频率可达1725MHz&#xff0c;TDP为350W。 选RTX3090还是RTX A6000 这些点很重要!看完你…

ContentProvider 和ContentResolver内容提供者和内容解析者

内容提供程序管理对中央数据存储库的访问。提供程序是 Android 应用的一部分&#xff0c;通常提供自己的 UI 来使用数据。 但是&#xff0c;内容提供程序主要旨在供其他应用使用&#xff0c;这些应用使用提供程序客户端对象来访问提供程序。 提供程序与提供程序客户端共同提供一…

这可能是最详细的Python文件操作

删除 # 删除 # 只能删除文件&#xff0c;若为目录则报错 # 若文件正在使用&#xff0c;Windows下会直接报错&#xff0c;Linux下会在目录表中删除记录&#xff0c;但文件还在 # 与os.unlink()一样的作用 os.remove(r"C:\Users\Microsoft\Desktop\111.exe")# 删除目录…