本文讨论的是android中如何实现更平滑的单色渐变效果。一般来说,当我们想让界面上的某个区域呈现单色渐变效果,我们用drawable 来实现:

<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradientandroid:startColor="@android:color/holo_blue_light"android:endColor="@android:color/transparent"android:angle="180"/><corners android:radius="10dp"/>
</shape>

上面定义如下属性

  1. 开始颜色,
  2. 结束颜色,
  3. 颜色渐变方向,上面定义的是垂直,从上到下
我们的效果是做面的图,这个效果在android上是最好实现的,因为xml就可以配置,中国特色使然,各种文档介绍也是上面雷同内容
。右边的背景如何实现呢?当时项目需要,找了很多文章都没有发现,最后是通过个View两个背景实现的,说实话当时蛮鄙视的,为什么
我们只会使用的,没有研究的动力、乐趣呢?
出于这样的自责,开始了进一步研究(不是网上有的我才会用,而是自我研究一些东西帮助大家),先看android是否有个给我们提供
机制帮我们实现这样的东西,看了几个Drawable paitDrawable、ShapeDrawalbe,最后发现通过PaintDrawable可以实现,结合
Shape的一些子类
<pre name="code" class="html">paintDrawable.setShaderFactory(new ShapeDrawable.ShaderFactory() {@Overridepublic Shader resize(int width, int height) {
paintDrawable.setShaderFactory(new ShapeDrawable.ShaderFactory() {@Overridepublic Shader resize(int width, int height) {LinearGradient linearGradient = new LinearGradient(width * x0,height * y0,width * x1,height * y1,stopColors, stopHeightsStep,Shader.TileMode.CLAMP);return linearGradient;}});

通过设置stopColors, StopHeightsStep,根据不同分段设置不同颜色,久能达到效果。如果有具体问题可以通过QQ找我。

android非线性渐变色,不同区域显示不同的渐变效果相关推荐

  1. Android 系统(49)---Android获取窗口可视区域大小: getWindowVisibleDisplayFrame()

    Android获取窗口可视区域大小: getWindowVisibleDisplayFrame() getWindowVisibleDisplayFrame()方法 getWindowVisibleD ...

  2. Android 应用桌面角标显示

    Android 应用桌面角标显示 前言 ### 什么是角标? ​ 首先如图1所示,角标就是当有消息来的时候,桌面上应用的图标会用数字显示新消息的条数. ​ 应用角标先出现在ios系统上,apple用于 ...

  3. Android智能识别 - 银行卡区域裁剪(原理篇)

    在 Android智能识别 - 银行卡区域裁剪 一文中我们用了如下几行代码,获取发现银行卡的轮廓: // 梯度增强 , x 轴和 y 轴Mat grad_x, grad_y;Scharr(blur, ...

  4. android设置背景颜色渐变,Android背景渐变色(shape,gradient)

    Android设置背景色可以通过在res/drawable里定义一个xml,如下: android:startColor="#FFF" android:endColor=" ...

  5. Android中如何加载显示大尺寸图片不发生OOM

    前言:当加载高清大图时,系统给每个应用分配的内存是有限的,如果一个资源图片太大,加载到内存中后,占用的内存空间也会很大,这样就会造成OOM.那在Android开发中如何正确加载高清大图呢? 采用Bit ...

  6. android 弹出fragment,Android中ViewPager获取当前显示的Fragment

    前言 在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment ...

  7. Android -- TextView与EditText 同步显示

    Android -- TextView与EditText 同步显示 文章分类:JavaEye 方法一.利用View.OnKeyListener"同步"显示         Java ...

  8. R语言ggplot2可视化:可视化水平堆叠条形图(horizontal stacked bar plot)并在条形图中的每个分组条形区域显示区域占整体的百分比数值标签

    R语言ggplot2可视化:可视化水平堆叠条形图(horizontal stacked bar plot)并在条形图中的每个分组条形区域显示区域占整体的百分比数值标签(draw stacked bar ...

  9. Android Stadio 导入moudle 不显示

    Android Stadio 导入moudle 不显示,moudle 里面的java类也没有识别,只当是普通的txt文件. 后来,我发现,每个moudle 都有一个.iml 文件~ 然后我就随便翻翻配 ...

最新文章

  1. C#生成CHM文件(应用篇)之代码库编辑器(5)【总结、程序、源代码】
  2. python制作小工具_利用Python制作翻译小工具
  3. 体验使用node.js创建vue+Element-UI项目
  4. FQND之联想--username@host.domain跟进
  5. vb编程的好帮手--资源文件
  6. JAVA显式锁,各种锁分类
  7. 日行千里,全凭“车”况,为什么我们要升级平台
  8. 马云妇女节寄语女性:没有败家的女人 只有爱家的女人
  9. 2009年高考作文------拉风篇
  10. 如何使用github和git进行团队合作开发(队友和owner的仓库连接)
  11. ES6 关于Set对象
  12. Android 使用 aria2c + 百度网盘助手下载百度云文件
  13. pom文件中的dependencyManagement和dependency
  14. python熵权法求权重
  15. MaxScale 2.5
  16. 【论文笔记】An End-to-End Model for QA over KBs with Cross-Attention Combining Global Knowledge
  17. 解决Pycharm装Illuminated Cloud之后无法创建项目的思路_艾孜尔江撰稿
  18. 英语4级词汇量有多少?【原创】
  19. Python检查Word文件中包含特定关键字的所有页码
  20. 学生网站模板:旅游出行网站设计——旅游网设计(15页) HTML+CSS+JavaScript 学生DW网页设计作业成品 学生旅游网站模板

热门文章

  1. IDEA搭建jsp项目
  2. intellij idea自动提示方法快捷键
  3. LNK 2001错误
  4. 如何用Git将代码上传到GitHub
  5. House of orange
  6. 九州量子黄蕾蕾:我们是冲着量子通信产业化来的
  7. Linux 如何检测硬盘坏道?
  8. java技术学习交流群,诚邀您的加入
  9. java对称加密与非对称加密
  10. layui table 单元格合并