热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Android应用的Material设计中图片的相关处理指南

这篇文章主要介绍了Android应用的Material设计中图片的相关处理指南,除了介绍新的方法外文中还给出了一些设计标准样例仅供参考,需要的朋友可以参考下

可伸缩的矢量图片不会丢失清晰度,并且单一颜色的app-icon是完美的
可定义一个bitmap作为透明度(alpha)和运行时的颜色
可对一个bitmap image取色,会取出它比较显眼的颜色
官网地址:https://developer.android.com/training/material/drawables.html

以下图片的功能能帮助你在app中实现Material设计:

  • 图片着色
  • 颜色提取
  • 矢量图片

Tint Drawable Resources  为图片资源染色

在Android 5.0(API级别21)及以上,你可以将图片和9-patch定义为掩饰透明度。你能使用颜色资源(如,?android:attr/colorPrimary)或主题属性来给它们上色。通常,你只需创建这些资源一次,且自动匹配你的主题为它们上色。
可以为BitmapDrawable和NinePatchDrawable 的对象使用setTint(int tint)进行染色。也可以在xml中定义android:tint和android:tintMode属性。
·关于setTint(int tint)的参数,可以是一个@color/下的属性,也可以是一个xml的selector,selector中的item是使用了数字的,如:

 
  
  
  
  
 

·关于xml中定义属性,如:

<&#63;xmlversion="1.0"encoding="utf-8"&#63;>


Extract Prominent Colors from an Image  从图片抽取明显的颜色
在api21上的support-v7库中有一个android-support-v7-palette.jar,它能够让你从图片中抽取一些显眼的颜色:

Palette p = Palette.generate(Bitmap bitmap);
  • 鲜艳的                p.getVibrantColor(int defaultColor);
  • 鲜艳的黑暗         p.getDarkVibrantColor(int defaultColor);
  • 鲜艳的明亮         p.getLightVibrantColor(int defaultColor);
  • 柔和的                p.getMutedColor(int defaultColor);
  • 柔和的黑暗         p.getDarkMutedColor(int defaultColor);
  • 柔和的明亮         p.getLightMutedColor(int defaultColor);

Palette.generate(),用于在后台线程中执行,如果在前台线程中创建Palette对象,那么可以使用Palette.generateAsync()。

Create Vector Drawables  创建矢量图片
在Android 5.0(API级别21)及以上 可以创建矢量图片,如下面的例子可以绘制一个心形的矢量图:




 
 


矢量图片在Android中使用VectorDrawble对象与之对应。path的更多信息请见:http://www.w3.org/TR/SVG11/paths.html#PathData。

设计标准样例

选用图片

201647143812255.jpg (360×640)

201647143834743.jpg (360×640)

描述具体事物,优先使用照片。然后可以考虑使用插画。
图片上的文字

201647143901264.jpg (360×640)

图片上的文字,需要淡淡的遮罩确保其可读性。深色的遮罩透明度在20%-40%之间,浅色的遮罩透明度在40%-60%之间。

201647143921405.jpg (360×640)

对于带有文字的大幅图片,遮罩文字区域,不要遮住整张图片。

201647143939265.jpg (360×640)

可以使用半透明的主色盖住图片。
提取颜色

201647143957004.jpg (360×640)

Android L可以从图片中提取主色,运用在其他UI元素上。
图片加载过程

201647144014065.png (760×372)

图片的加载过程非常讲究,透明度、曝光度、饱和度3个指标依次变化,效果相当细腻。


推荐阅读
  • 本文介绍了编程语言的基本分类,包括机器语言、汇编语言和高级语言的特点及其优缺点。随后详细讲解了Python解释器的安装与配置方法,并探讨了Python变量的定义、使用及内存管理机制。 ... [详细]
  • 本文介绍了如何使用 Gesture Detector 和 overridePendingTransition 方法来实现滑动界面和过渡动画。 ... [详细]
  • 本文介绍了如何使用开源工具ChkBugReport来解析和分析Android设备的Bugreport。ChkBugReport能够将复杂的Bugreport转换为易于阅读的HTML报告,并提供详细的图表和分析结论。 ... [详细]
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
  • Spring 中策略模式的应用:Resource 接口详解
    本文探讨了在 Spring 框架中如何利用 Resource 接口实现资源访问策略。Resource 接口作为资源访问策略的抽象,通过多种实现类支持不同类型的资源访问。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 深入理解Select、Poll和Epoll
    本文详细介绍了三种常用的I/O多路复用技术:Select、Poll和Epoll。通过对比它们的工作原理和性能特点,帮助读者更好地选择适合的I/O模型。 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
  • 使用外部样式表实现盒子居中对齐
    本文介绍如何在HTML文件中引入外部CSS样式表,并通过CSS实现盒子的居中对齐。 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • 本文介绍了如何使用线段树实现区间加法和区间查询操作,包括详细的代码实现和解释。 ... [详细]
  • 线段树,注 ... [详细]
  • 2017年5月9日学习总结
    本文记录了2017年5月9日的学习内容,包括技术分享和相关知识点的深入探讨。 ... [详细]
  • 本文章提供了适用于 Cacti 的多核 CPU 监控模板,支持 2、4、8、12、16、24 和 32 核配置。请注意,0.87g 版本的 Cacti 需要手动修改哈希值为 0021 才能使用,而 0.88 及以上版本则可直接导入。 ... [详细]
author-avatar
倾听雨2502862143
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有