本篇是根據 +Roman Nurik 在 2014/11/24 發佈的一篇 G+ 而來。看到他發文後,起了好奇心,就根據他提出的方法嘗試著實作,並將之排列呈現,直接從視覺上做個比較。

他在 G+ 的發文中提出一個做法,改良原本看起來有點單調的漸層,改變線性到三次項的梯度呈現,使之看起來更加順眼,而將之定名為「Gradient Scrims」。然後,本篇的呈現原則上還是在 Android 5 以上的版本可以看到最佳效果哦 

先看到結果,如下圖:左邊是我們平常的使用習慣,右邊是改變做法的呈現。

原則上,我們過去在 Android 開發的漸層處理,就是用 drawable 來實作之,以本範例來說,drawable 的程式碼如下:

 
 
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
      <gradient android:startColor="@color/primary_dark"
        android:endColor="@android:color/transparent"
        android:angle="90"
        />
    </shape>
  </item>
</selector>

口語來說,就是定義了一個由藍到透明的漸層方形圖,並將之轉向 90 度,好讓藍色的部份可以如上左圖般,像是從 navigation bar 延伸上去的顏色。

這樣的漸層過去也就是被設定在該文字區塊中,也就像本圖例中的樣子,

 
 
1
2
3
4
5
6
<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="@drawable/gradlient_background"
 
...

而這樣是一個線性的呈現,看起來也比較僵化點,所以 Roman 提出了一個做法,將這條曲線從線性改成三次曲線,同時,將這個這個漸層文字區塊擴張到這個畫面。這個效果的程式碼是即將被使用在Muzei 中的 ScrimUtil(撰文的這個時間點還未被使用)。

而 Scrim 的使用方式大至上如下:

 
 
1
2
3
4
5
6
7
8
if(Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
  View bottom = findViewById(R.id.view_base_bottom);
  bottom.setBackground(
    ScrimUtil.makeCubicGradientScrimDrawable(
     getResources().getColor(R.color.primary_dark), //顏色
     8, //漸層數
     Gravity.BOTTOM)); //起始方向
}

bottom 是一個全畫面的 layout 元件,使用 makeCubicGradientScrimDrawable 這個函式來計算,我們要在這個漸層中分出幾個梯度出來。也許就是因為這個梯度效果看起來像是紡織布的樣子,所以才被 Roman 定名為 Gradient Scrim 吧。至於要分成多少梯度就全看大家的需求嘍。

最後下方的三張圖,左邊跟中間的兩張圖,都是採用了 Gradient Scrim 的方式呈現漸層。中間那張主要是拿掉了上面的漸層效果,好跟右邊全畫面的線性漸層做個比較

補充:下方這三張在中間插入了另一個介面設定,左邊是原線性的處理方式;右邊是全面的 gradient scrims 介面;

上圖新加入的中間那張是根據文字區塊的大小,再加上 padding 的高度,讓漸層更聚焦在該區塊中。

 
 
1
2
3
4
5
6
<LinearLayout
  android:id="@+id/view_base_bottom"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:paddingTop="@dimen/gradient_scrim_padding"
...

不知道各位比較喜歡哪種呢 

ANDROID – 單色漸層效果的改良 – GRADIENT SCRIMS(转)的更多相关文章

  1. Android RecyclerView 实现支付宝首页效果

    Android RecyclerView 实现支付宝首页效果 [TOC] 虽然我本人不喜欢支付宝的,但是这个网格本身其实还是不错的,项目更新中更改了一个布局为网格模式,类似支付宝.(估计是产品抄袭的= ...

  2. 在android中用跑马灯的效果显示textview

    大家好,在我们通常的android project中,通常需要用到textview这一个布局文件,并且对于这一个显示布局所需要的文本文字内容. 下面我们就来介绍一种方法来实现在android中用跑马灯 ...

  3. 50个Android开发人员必备UI效果源码[转载]

    50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面 ...

  4. android中设置Animation 动画效果

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  5. Android 实现书籍翻页效果----升级篇

    自从之前发布了<Android 实现书籍翻页效果----完结篇 >之后,收到了很多朋友给我留言,前段时间由于事情较多,博客写得太匆忙很多细节地方没有描述清楚.所以不少人对其中的地方有不少不 ...

  6. android设置view透明度的效果

    android设置view透明度的效果 推荐textView.setBackgroundColor(Color.TRANSPARENT);     第一种方法:在xml文件中设置背景颜色. andro ...

  7. [转载] 50个Android开发人员必备UI效果源码

    好东西,多学习! Android 仿微信之主页面实现篇Android 仿微信之界面导航篇Android 高仿QQ 好友分组列表Android 高仿QQ 界面滑动效果Android 高仿QQ 登陆界面A ...

  8. Android中实现ListView圆角效果[转]

    本文演示如何Android中实现ListView圆角效果. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看圆角,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,特 ...

  9. Android实现左右滑动指引效果

    本文介绍Android中实现左右滑动的指引效果. 关于左右滑动效果,我在以前的一篇博文中提到过,有兴趣的朋友可以查看:http://www.cnblogs.com/hanyonglu/archive/ ...

随机推荐

  1. 使用appledoc 生成技术API文档具体解释

    一. 首先安装 appledoc 第一步:使用终端命令进行下载安装 git clone git://github.com/tomaz/appledoc.git cd ./appledoc sudo s ...

  2. python_程序模拟浏览器请求及会话保持

    python下读取一个页面的数据可以通过urllib2轻松实现请求 import urllib2 print urllib2.urlopen('http://www.baidu.com').read( ...

  3. SharePoint 2013 将HTML文件转换为母版页

    内容中包含 base64string 图片造成字符过多,拒绝显示

  4. Node.js静态文件服务器实战[转]

    p.s. 在下面这篇文章的指导下,做了一个静态文件服务器,见:https://github.com/walkerwzy/node_static_server ==== 这是一篇阐述得比较详细的文章,从 ...

  5. Java编程思想学习笔记——字符串

    前言 字符串操作是计算机程序设计中最常见的行为. 不可变String String对象是不可变的 重载"+"与StringBuilder String对象是不可变的,可以给Stri ...

  6. flexible.js移动端适配安卓高分辨不兼容问题

    根据网上找到的解决办法,对于安卓设备,把dpr=1改为当前设备的dpr if (!dpr && !scale) { if (isIPhone) { // iOS下,对于2和3的屏,用2 ...

  7. tomcat 重启报错unregister mbean error javax.management.InstanceNotFoundException

    JAVA_OPTS='-Ddruid.registerToSysProperty=true' 多个应用部署到tomcat下需要在/bin/catalina.sh下添加上面这句话 添加位置在‘cygwi ...

  8. linux环境中,如何查看某个软件包,都依赖哪些软件包?被哪些软件包依赖?

    需求描述: 今天查看主机上的一个软件ghostscript,准备删除,就先看下这个软件都依赖哪些软件, 然后呢被哪些软件依赖 操作过程: 1.查看这个软件依赖哪些软件(rpm方式查询) [root@t ...

  9. 字符编码笔记:ASCII,Unicode 和 UTF-8

    http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

  10. GCD (Grand Central Dispatch) 笔记

    GCD (Grand Central Dispatch) 是Apple公司开发的一种技术,它旨在优化多核环境中的并发操作并取代传统多线程的编程模式. 在Mac OS X 10.6和IOS 4.0之后开 ...