android开发分享Android实现背景颜色滑动渐变效果的全过程

目录一、介绍一下gradientdrawable前言今天和朋友聊到这个功能,刚开始的想法是自定义view,如何进行滑动监听,经过一列操作完成效果后,发现了一个贼简单的实现效果,如下(老规矩后面有可运行

目录
  • 一、介绍一下gradientdrawable

前言

今天和朋友聊到这个功能,刚开始的想法是自定义view,如何进行滑动监听,经过一列操作完成效果后,发现了一个贼简单的实现效果,如下(老规矩后面有可运行代码)。

效果图:

Android实现背景颜色滑动渐变效果的全过程

一、介绍一下gradientdrawable

gradientdrawable 支持渐变色的drawable,与shapedrawable是类似的,多了支持渐变色。
代码中的gradientdrawable比xml中的shape下gradient属性更加具体,shape下gradient属性只支持三色阶渐变,而gradientdrawable可以有更多的色阶渐变(gradientdrawable在android中便是shape标签的代码实现)。

二、实现

1、在布局中放入一个scrollview,然后确保里面的内容能够达到滑动的效果。

Android实现背景颜色滑动渐变效果的全过程

2、获取屏幕的高度

      //获取屏幕高度       private float getscreenheight(){           displaymetrics metric = new displaymetrics();           getwindowmanager().getdefaultdisplay().getmetrics(metric);           int width = metric.widthpixels;     // 屏幕宽度(像素)           int height = metric.heightpixels;   // 屏幕高度(像素)           return  height;       }  

3、获取控件高度(此案例为scrollview中包裹的第一个子控件)。

4、设置颜色(为了方便颜色自接写出来)

    gradientdrawable adrawable = new gradientdrawable(gradientdrawable.orientation.top_bottom,                      new int[]{color.parsecolor("#ffffff"), color.parsecolor("#009966"),color.parsecolor("#00ff00")});              ll_base.setbackground(adrawable);  

5、获取控件与屏幕高度(宽度)的比例,根据比例设置颜色个数

     //得到控件的高度与屏幕高度的比例      private float getscreenheightscale(int height){          return height/getscreenheight();      }  

三、源码:

  public class baseactivity extends activity {      private linearlayout ll_base;      private int heights;      @override      protected void oncreate(bundle savedinstancestate) {          super.oncreate(savedinstancestate);          setcontentview(r.layout.activity_base);          initview();      }          private void initview() {          ll_base = (linearlayout) findviewbyid(r.id.ll_base);      }            @requiresapi(api = build.version_codes.jelly_bean)      @override      public void onwindowfocuschanged(boolean hasfocus) {          super.onwindowfocuschanged(hasfocus);            heights = ll_base.getmeasuredheight();          float coloramount=getscreenheightscale(heights);          if (coloramount>=0&&coloramount<1.5f){              gradientdrawable adrawable = new gradientdrawable(gradientdrawable.orientation.top_bottom,                      new int[]{color.parsecolor("#ffffff"), color.parsecolor("#009966")});              ll_base.setbackground(adrawable);          }          if (coloramount>=1.5f&&coloramount<3.0f){              gradientdrawable adrawable = new gradientdrawable(gradientdrawable.orientation.top_bottom,                      new int[]{color.parsecolor("#ffffff"), color.parsecolor("#009966"), color.parsecolor("#00ff00")});              ll_base.setbackground(adrawable);          }          if (coloramount>=3.0f&&coloramount<4.5f){              gradientdrawable adrawable = new gradientdrawable(gradientdrawable.orientation.top_bottom,                      new int[]{color.parsecolor("#ffffff"), color.parsecolor("#009966"), color.parsecolor("#00ff00"),color.parsecolor("#000000")});              ll_base.setbackground(adrawable);          }         // .................      }        //得到控件的高度与屏幕高度的比例      private float getscreenheightscale(int height){          return height/getscreenheight();      }       //获取屏幕高度       private float getscreenheight(){           displaymetrics metric = new displaymetrics();           getwindowmanager().getdefaultdisplay().getmetrics(metric);           int width = metric.widthpixels;     // 屏幕宽度(像素)           int height = metric.heightpixels;   // 屏幕高度(像素)           return  height;       }  }  

总结

到此这篇关于android实现背景颜色滑动渐变效果的文章就介绍到这了,更多相关android背景颜色滑动渐变内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/addevelopment/889035.html

(0)
上一篇 2021年10月19日
下一篇 2021年10月19日

精彩推荐