Android實(shí)現(xiàn)背景顏色滑動(dòng)漸變效果的全過程
前言
今天和朋友聊到這個(gè)功能,剛開始的想法是自定義view,如何進(jìn)行滑動(dòng)監(jiān)聽,經(jīng)過一列操作完成效果后,發(fā)現(xiàn)了一個(gè)賊簡單的實(shí)現(xiàn)效果,如下(老規(guī)矩后面有可運(yùn)行代碼)。
效果圖:

一、介紹一下GradientDrawable
GradientDrawable 支持漸變色的Drawable,與shapeDrawable是類似的,多了支持漸變色。
代碼中的GradientDrawable比xml中的shape下gradient屬性更加具體,shape下gradient屬性只支持三色階漸變,而GradientDrawable可以有更多的色階漸變(GradientDrawable在Android中便是shape標(biāo)簽的代碼實(shí)現(xiàn))。
二、實(shí)現(xiàn)
1、在布局中放入一個(gè)ScrollView,然后確保里面的內(nèi)容能夠達(dá)到滑動(dòng)的效果。

2、獲取屏幕的高度
//獲取屏幕高度
private float getScreenHeight(){
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕寬度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
return height;
}
3、獲取控件高度(此案例為ScrollView中包裹的第一個(gè)子控件)。
4、設(shè)置顏色(為了方便顏色自接寫出來)
GradientDrawable aDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,
new int[]{Color.parseColor("#ffffff"), Color.parseColor("#009966"),Color.parseColor("#00ff00")});
ll_base.setBackground(aDrawable);
5、獲取控件與屏幕高度(寬度)的比例,根據(jù)比例設(shè)置顏色個(gè)數(shù)
//得到控件的高度與屏幕高度的比例
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;
}
}
總結(jié)
到此這篇關(guān)于Android實(shí)現(xiàn)背景顏色滑動(dòng)漸變效果的文章就介紹到這了,更多相關(guān)Android背景顏色滑動(dòng)漸變內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android 滑動(dòng)Scrollview標(biāo)題欄漸變效果(仿京東toolbar)
- Android之scrollview滑動(dòng)使標(biāo)題欄漸變背景色的實(shí)例代碼
- Android開發(fā)實(shí)現(xiàn)標(biāo)題隨scrollview滑動(dòng)變色的方法詳解
- Android ListView滑動(dòng)改變標(biāo)題欄背景漸變效果
- Android 頂部標(biāo)題欄隨滑動(dòng)時(shí)的漸變隱藏和漸變顯示效果
- Android 中實(shí)現(xiàn)ListView滑動(dòng)隱藏標(biāo)題欄的代碼
- Android ScrollView滑動(dòng)實(shí)現(xiàn)仿QQ空間標(biāo)題欄漸變
- Android開發(fā)之滑動(dòng)圖片輪播標(biāo)題焦點(diǎn)
- Android直播軟件搭建之實(shí)現(xiàn)背景顏色滑動(dòng)漸變效果的詳細(xì)代碼
- Android?App頁面滑動(dòng)標(biāo)題欄顏色漸變詳解
相關(guān)文章
Android RecyclerView點(diǎn)擊事件
這篇文章主要為大家詳細(xì)介紹了Android RecyclerView點(diǎn)擊事件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android發(fā)送GET與POST請求的DEMO詳解
本篇文章是對Android發(fā)送GET與POST請求的DEMO進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
android 中win10 使用uwp控件實(shí)現(xiàn)進(jìn)度條Marquez效果
這篇文章主要介紹了android 中win10 使用uwp控件實(shí)現(xiàn)進(jìn)度條Marquez效果,需要的朋友可以參考下2017-06-06
強(qiáng)制Android應(yīng)用使用某個(gè)Locale的方法
這篇文章主要介紹了強(qiáng)制Android應(yīng)用使用某個(gè)Locale的方法,涉及Android基于Locale進(jìn)行語言設(shè)置的相關(guān)技巧,需要的朋友可以參考下2015-10-10
解析Java的迭代器中的fast-fail錯(cuò)誤檢測機(jī)制
這篇文章主要介紹了Java的迭代器中的fast-fail錯(cuò)誤檢測機(jī)制,需要的朋友可以參考下2016-02-02

