国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android開發(fā)基于ScrollView實(shí)現(xiàn)的漸變導(dǎo)航欄效果示例

2019-10-22 18:21:09
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Android開發(fā)基于ScrollView實(shí)現(xiàn)的漸變導(dǎo)航欄效果。分享給大家供大家參考,具體如下:

前些日子項(xiàng)目要在原來的頁面上加入漸變導(dǎo)航欄的功能,查了很多資料,很多資源都是監(jiān)聽到listview的高度來實(shí)現(xiàn)漸變導(dǎo)航欄的效果,可是項(xiàng)目里面很多的界面都是使用ScrollView來實(shí)現(xiàn)滑動(dòng)效果。

實(shí)在沒辦法,就自己寫了一個(gè)test來實(shí)現(xiàn)這個(gè)效果。

Android,ScrollView,漸變,導(dǎo)航欄

話不多說,馬上看一下思路吧,其實(shí)漸變導(dǎo)航欄無非就是改變導(dǎo)航欄的透明度也就是可以設(shè)定一個(gè)高度,根據(jù)這個(gè)高度,監(jiān)聽ScrollView滑動(dòng)的距離,從而實(shí)現(xiàn)漸變導(dǎo)航欄的效果。

下面看代碼吧

首先自定義一個(gè)ScrollView

1、ObservableScrollView.java

package com.example.test;import android.content.Context;import android.os.Build;import android.util.AttributeSet;import android.widget.ScrollView;public class ObservableScrollView extends ScrollView implements    ObservableScrollable {  private boolean mDisableEdgeEffects = true;  private OnScrollChangedCallback mOnScrollChangedListener;  public ObservableScrollView(Context context) {    super(context);  }  public ObservableScrollView(Context context, AttributeSet attrs) {    super(context, attrs);  }  public ObservableScrollView(Context context, AttributeSet attrs,      int defStyle) {    super(context, attrs, defStyle);  }  @Override  protected void onScrollChanged(int l, int t, int oldl, int oldt) {    super.onScrollChanged(l, t, oldl, oldt);    if (mOnScrollChangedListener != null) {      mOnScrollChangedListener.onScroll(l, t);    }  }  @Override  protected float getTopFadingEdgeStrength() {    if (mDisableEdgeEffects        && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {      return 0.0f;    }    return super.getTopFadingEdgeStrength();  }  @Override  protected float getBottomFadingEdgeStrength() {    if (mDisableEdgeEffects        && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {      return 0.0f;    }    return super.getBottomFadingEdgeStrength();  }  @Override  public void setOnScrollChangedCallback(OnScrollChangedCallback callback) {    mOnScrollChangedListener = callback;  }}

這里面定義了兩個(gè)接口

2、ObservableScrollable.java

package com.example.test;public interface ObservableScrollable {  void setOnScrollChangedCallback(OnScrollChangedCallback callback);}

3、OnScrollChangedCallback.java

package com.example.test;public interface OnScrollChangedCallback {  void onScroll(int l, int t);}

這里的回調(diào)函數(shù),實(shí)現(xiàn)了對(duì)ScrollView的監(jiān)聽

然后就是main方法

4、MainActivity.java

package com.example.test;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.Window;import android.widget.RelativeLayout;import android.widget.ScrollView;public class MainActivity extends Activity implements OnScrollChangedCallback {  ObservableScrollable sv;  RelativeLayout rl;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    requestWindowFeature(Window.FEATURE_NO_TITLE);    setContentView(R.layout.activity_main);    rl = (RelativeLayout) findViewById(R.id.rl);    sv = (ObservableScrollable) findViewById(R.id.sv);    sv.setOnScrollChangedCallback(this);  }  @Override  public void onScroll(int l, int t) {    float newAlpha = (float)t/500;    rl.setAlpha(newAlpha);  }}

main中設(shè)置對(duì)ScrollView的監(jiān)聽,同時(shí)設(shè)置監(jiān)聽高度為500,將500分為100%來實(shí)現(xiàn)漸變導(dǎo)航欄的改變

然后在xml文件上繼承ObservableScrollView類即可。

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宽甸| 治县。| 长宁区| 扬州市| 钟祥市| 德州市| 新干县| 瑞金市| 金堂县| 吉安县| 应城市| 友谊县| 建平县| 康保县| 西安市| 沅江市| 牙克石市| 孟津县| 石嘴山市| 泰和县| 霍城县| 宜良县| 论坛| 泸西县| 北京市| 班玛县| 凌云县| 普定县| 梁河县| 张家口市| 方正县| 徐汇区| 大足县| 江油市| 舟曲县| 东乡县| 若羌县| 财经| 阳春市| 景泰县| 太仓市|