最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年12月06日 10:52:54   作者:Surkey1030  
這篇文章主要介紹了Android開發(fā)基于ScrollView實(shí)現(xiàn)的漸變導(dǎo)航欄效果,涉及ScrollView事件響應(yīng)及元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(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è)效果。

話不多說,馬上看一下思路吧,其實(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類即可。

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

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

相關(guān)文章

最新評(píng)論

江津市| 津南区| 天峻县| 布尔津县| 永福县| 河间市| 札达县| 铁岭市| 壶关县| 丰宁| 聂荣县| 津南区| 海林市| 福鼎市| 兴和县| 甘洛县| 山阴县| 临湘市| 仙游县| 平安县| 若羌县| 田阳县| 阿坝| 宁蒗| 辉县市| 阳城县| 旬邑县| 什邡市| 武冈市| 广州市| 民权县| 习水县| 庄浪县| 楚雄市| 镇江市| 顺义区| 灯塔市| 皮山县| 双牌县| 高碑店市| 峨眉山市|