欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • Kotlin注解與反射的定義及創(chuàng)建使用詳解

    Kotlin注解與反射的定義及創(chuàng)建使用詳解

    這篇文章主要為大家介紹了Kotlin注解與反射的定義及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Android TextView兩端對(duì)齊解決辦法

    Android TextView兩端對(duì)齊解決辦法

    這篇文章主要介紹了Android TextView兩端對(duì)齊解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android自定義圓點(diǎn)指示器

    Android自定義圓點(diǎn)指示器

    這篇文章主要為大家詳細(xì)介紹了Android自定義圓點(diǎn)指示器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Android實(shí)現(xiàn)判斷某個(gè)服務(wù)是否正在運(yùn)行的方法

    Android實(shí)現(xiàn)判斷某個(gè)服務(wù)是否正在運(yùn)行的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)判斷某個(gè)服務(wù)是否正在運(yùn)行的方法,涉及Android針對(duì)系統(tǒng)服務(wù)運(yùn)行狀態(tài)的判斷技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android仿騰訊視頻實(shí)現(xiàn)懸浮窗效果

    Android仿騰訊視頻實(shí)現(xiàn)懸浮窗效果

    對(duì)view比較熟悉的同學(xué)們應(yīng)該發(fā)現(xiàn)了,其實(shí)我們的懸浮窗就是一個(gè)view,我們只需要把view添加到windowManager上就可以了。那么,下面通過本文給大家分享Android仿騰訊視頻實(shí)現(xiàn)懸浮窗效果,一起看看吧
    2021-06-06
  • Android studio六大基本布局詳解

    Android studio六大基本布局詳解

    這篇文章主要介紹了Android常用的布局方式:線性布局,相對(duì)布局,表格布局,層布局,絕對(duì)布局,網(wǎng)格布局,用的相對(duì)較多的是線性布局和相對(duì)布局。感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • Android PopWindow 設(shè)置背景亮度的實(shí)例

    Android PopWindow 設(shè)置背景亮度的實(shí)例

    這篇文章主要介紹了Android PopWindow 設(shè)置背景亮度的實(shí)例的相關(guān)資料,這里提供實(shí)現(xiàn)方法,希望能幫助有所需要的朋友,需要的朋友可以參考下
    2017-08-08
  • Android自定義ViewGroup實(shí)現(xiàn)豎向引導(dǎo)界面

    Android自定義ViewGroup實(shí)現(xiàn)豎向引導(dǎo)界面

    這篇文章主要為大家詳細(xì)介紹了Andoird自定義ViewGroup實(shí)現(xiàn)豎向引導(dǎo)界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Android中使用OkHttp包處理HTTP的get和post請(qǐng)求的方法

    Android中使用OkHttp包處理HTTP的get和post請(qǐng)求的方法

    OkHttp包為安卓開發(fā)中的HTTP協(xié)議網(wǎng)絡(luò)編程帶來了很大的便利,這里我們就來看一下最基本的、Android中使用OkHttp包處理HTTP的get和post請(qǐng)求的方法:
    2016-07-07
  • Android控件實(shí)現(xiàn)直播App點(diǎn)贊飄心動(dòng)畫

    Android控件實(shí)現(xiàn)直播App點(diǎn)贊飄心動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了FlowLikeView控件實(shí)現(xiàn)直播App特效之點(diǎn)贊飄心動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03

最新評(píng)論