ANDROID – 單色漸層效果的改良 – GRADIENT SCRIMS(转)

本篇是根據 +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"

...

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

时间: 2024-10-12 19:01:43

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

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

50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面实现篇Android 仿微信之界面导航篇Android 高仿QQ 好友分组列表Android 高仿QQ 界面滑动效果Android 高仿QQ 登陆界面Android 对Path的旋转效果的拓展Android高仿360安全卫士布局源码Android SlidingDrawer 滑动抽屉效果Androi

android shape图形优化Button效果

android shape可以让我们通过定义xml文件的方式创建图形,当然只能实现一些比较简单的图形(圆形,矩形,椭圆,线段),但是已经相当不错了,通过shape创建的图形作为控件的背景已经基本可以满足我的简单需求了,而且通过shape创建的图形可以适配各种屏幕. 下面就用shape定义的图形来优化Button的整体效果. 定义主布局文件activity_main.xml: 1 <RelativeLayout xmlns:android="http://schemas.android.co

android 仿ppt进入动画效果合集

EnterAnimation android 仿ppt进入动画效果合集, 百叶窗效果,擦除效果,盒状效果,阶梯效果,菱形效果,轮子效果,劈裂效果,棋盘效果, 切入效果,扇形展开效果,十字扩展效果,随机线条效果,向内溶解效果,圆形扩展效果, 适用于各种view和viewgroup,activity即用于页面根部viewgroup, 自定义viewgroup自动换行layout, 看效果图 Series of entrance animation effects just like ppt in A

Android三种左右滑动效果 手势识别

Android三种左右滑动效果 手势识别(转) 手势识别 1.onCreate中添加GestureDetector mGestureDetector; //监听手势事件 mGestureDetector = new GestureDetector(this, onGestureListener); 2.//实现处理事件 OnGestureListener onGestureListener = new OnGestureListener() { //添加未实现的方法 }; 3.重写onTouch

Android实现左右滑动指引效果

本文介绍Android中实现左右滑动的指引效果. 关于左右滑动效果,我在以前的一篇博文中提到过,有兴趣的朋友可以查看:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2349827.html 如果想实现带渐显按钮的左右滑动效果,请访问博文:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2350171.html 本文的目的是要实现左右滑动的指引效果.那么什么是指引效果呢?现在的应用为了

[转]Android有趣的全透明效果--Activity及Dialog的全透明(附android系统自带图标大全

原文:http://blog.csdn.net/sodino/article/details/5822147 1.Activity全透明 同学zzm给了这个有趣的代码,现在公布出来. 先在res/values下建colors.xml文件,写入: <? xml   version = "1.0"   encoding = "UTF-8" ?>    < resources >        < color   name = "t

android中设置Animation 动画效果

在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation 画面转换动画,接下来eoe进行讲解. tweened animation 渐变动画有以下两种类型: 1.alpha   渐变透明度动画效果 2.scale   渐变尺寸伸缩动画效果 frame by frame animation 画面转换动画有以下两种类型: 1.translate  画面转换位置

Android 实现蘑菇街购物车动画效果

版本:1.0 日期:2014.8.6 版权:© 2014 kince 转载注明出处 使用过蘑菇街的用户基本上都知道有一个加入购物车的动画效果,此处不具体描述想知道的可以去下载体验一下. 1.思路 目前想到两种方式实现这种效果,一是使用Tween动画,直截了当的进行一个移动,蘑菇街就是使用这样的方法.二是使用WindowManager创建一个View,然后对这个View进行移动. 2.实现 本文先用方式一方法实现,之后会用方式二方法实现. 方式一: Activity代码: package com.

Android 4.0以上BlurMaskFilter效果无效

Android MaskFilter的基本使用: MaskFilter类可以为Paint分配边缘效果.        对MaskFilter的扩展可以对一个Paint边缘的alpha通道应用转换.Android包含了下面几种MaskFilter: BlurMaskFilter   指定了一个模糊的样式和半径来处理Paint的边缘.        EmbossMaskFilter  指定了光源的方向和环境光强度来添加浮雕效果. 要应用一个MaskFilter,可以使用setMaskFilter方法