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

首頁 > 系統 > Android > 正文

Android開發(fā)基于ScrollView實現的漸變導航欄效果示例

2019-12-12 01:31:40
字體:
來源:轉載
供稿:網友

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

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

實在沒辦法,就自己寫了一個test來實現這個效果。

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

下面看代碼吧

首先自定義一個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;  }}

這里面定義了兩個接口

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);}

這里的回調函數,實現了對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中設置對ScrollView的監(jiān)聽,同時設置監(jiān)聽高度為500,將500分為100%來實現漸變導航欄的改變

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

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android基本組件用法總結》、《Android開發(fā)入門與進階教程》、《Android布局layout技巧總結》、《Android視圖View技巧總結》、《Android編程之activity操作技巧總結》、《Android資源操作技巧匯總》及《Android控件用法總結

希望本文所述對大家Android程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 剑川县| 崇文区| 从化市| 五指山市| 大同县| 滨州市| 锡林浩特市| 淮滨县| 汽车| 铜川市| 新闻| 民和| 崇文区| 横山县| 襄汾县| 丰城市| 田林县| 大姚县| 富裕县| 九寨沟县| 林州市| 英吉沙县| 渭源县| 肥西县| 赤壁市| 黄平县| 威远县| 乃东县| 长宁县| 广昌县| 视频| 新野县| 城市| 石首市| 绥化市| 陇南市| 大方县| 陇南市| 通江县| 瑞安市| 伊春市|