介绍前言
一、介绍一下GradientDrawable
二,实现
本篇内容介绍了“Android怎么实现背景颜色滑动渐变效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
<编辑类="目录">目录编辑>- <李>
前言
一、介绍一下GradientDrawable
二,实现
三、源码:
李> <李>总结
李>前言
今天和朋友聊到这个功能,刚开始的想法是自定义的观点,如何进行滑动监听,经过一列操作完成效果后,发现了一个贼简单的实现效果,如下(老规矩后面有可运行代码)。
效果图:
一、介绍一下GradientDrawable
GradientDrawable支持渐变色的可拉的,与shapeDrawable是类似的,多了支持渐变色。
代码中的GradientDrawable比xml中的形状下梯度属性更加具体,形状下梯度属性只支持三色阶渐变,而GradientDrawable可以有更多的色阶渐变(GradientDrawable在Android中便是形状标签的代码实现)。
二,实现
1,在布局中放入一个滚动视图,然后确保里面的内容能够达到滑动的效果。
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 nullAndroid怎么实现背景颜色滑动渐变效果