Android怎么实现背景颜色滑动渐变效果

  介绍

本篇内容介绍了“Android怎么实现背景颜色滑动渐变效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

<编辑类="目录">目录 <李>

前言

<李>

一、介绍一下GradientDrawable

<李>

二,实现

<李>

三、源码:

<李>

总结

前言

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

效果图:

 Android怎么实现背景颜色滑动渐变效果

一、介绍一下GradientDrawable

GradientDrawable支持渐变色的可拉的,与shapeDrawable是类似的,多了支持渐变色。
代码中的GradientDrawable比xml中的形状下梯度属性更加具体,形状下梯度属性只支持三色阶渐变,而GradientDrawable可以有更多的色阶渐变(GradientDrawable在Android中便是形状标签的代码实现)。

二,实现

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

 Android怎么实现背景颜色滑动渐变效果

2,获取屏幕的高度

//获取屏幕高度   ,,,,private  float  getScreenHeight () {   ,,,,,,,,DisplayMetrics  metric =, new  DisplayMetrics ();   ,,,,,,,,getWindowManager () .getDefaultDisplay () .getMetrics(指标);   ,,,,,,,,int  width =, metric.widthPixels;,,,,,//,屏幕宽度(像素)   ,,,,,,,,int  height =, metric.heightPixels;,,,//,屏幕高度(像素)   ,,,,,,,,return ,高度;   ,,,,}

3,获取控件高度(此案例为滚动视图中包裹的第一个子控件)。

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

,, GradientDrawable  aDrawable =, new  GradientDrawable (GradientDrawable.Orientation.TOP_BOTTOM,   ,,,,,,,,,,,,,,,,,,,new  int [] {Color.parseColor (“# ffffff"), Color.parseColor (“# 009966“), Color.parseColor (“# 00 ff00")});   ,,,,,,,,,,,ll_base.setBackground (aDrawable);

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

,,,//得到控件的高度与屏幕高度的比例   ,,,private  float  getScreenHeightScale (int 高度){   ,,,,,,,return 高度/getScreenHeight ();   ,,,}

三、源码:

public  class  BaseActivity  extends  Activity  {   ,,,private  LinearLayout  ll_base;   ,,,private  int 高度;   ,,@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(高度);   ,,,,,,,if  (coloramount>=0,, coloramount<1.5 f) {   ,,,,,,,,,,,GradientDrawable  aDrawable =, new  GradientDrawable (GradientDrawable.Orientation.TOP_BOTTOM,   ,,,,,,,,,,,,,,,,,,,new  int [] {Color.parseColor (“# ffffff"), Color.parseColor (“# 009966“)});   ,,,,,,,,,,,ll_base.setBackground (aDrawable);   ,,,,,,,}   ,,,,,,,if  (coloramount>=1.5的,coloramount<3.0 f) {   ,,,,,,,,,,,GradientDrawable  aDrawable =, new  GradientDrawable (GradientDrawable.Orientation.TOP_BOTTOM,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android怎么实现背景颜色滑动渐变效果