【移動應(yīng)用開發(fā)技術(shù)】android怎么實現(xiàn)上滑屏幕隱藏底部菜單欄_第1頁
【移動應(yīng)用開發(fā)技術(shù)】android怎么實現(xiàn)上滑屏幕隱藏底部菜單欄_第2頁
【移動應(yīng)用開發(fā)技術(shù)】android怎么實現(xiàn)上滑屏幕隱藏底部菜單欄_第3頁
【移動應(yīng)用開發(fā)技術(shù)】android怎么實現(xiàn)上滑屏幕隱藏底部菜單欄_第4頁
【移動應(yīng)用開發(fā)技術(shù)】android怎么實現(xiàn)上滑屏幕隱藏底部菜單欄_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】android怎么實現(xiàn)上滑屏幕隱藏底部菜單欄

這篇文章主要介紹android怎么實現(xiàn)上滑屏幕隱藏底部菜單欄,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!引用github上一個仿今日頭條項目,項目地址:/iMeiji/Toutiao,主要實現(xiàn)的功能是底部菜單欄隨用戶手勢滑動而變化可見狀態(tài)布局代碼這個功能實現(xiàn)起來比較簡單,主要利用了CoordinatorLayout的layout_behavior的屬性。具體代碼如下:<android.support.design.widget.CoordinatorLayout

android:layout_width="match_parent"

android:layout_height="match_parent">

<include

layout="@layout/toolbar"/>

<include

layout="@layout/container"/>

<android.support.design.widget.BottomNavigationView

android:id="@+id/bottom_navigation"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_gravity="bottom"

android:background="@color/viewBackground"

app:elevation="16dp"

app:itemIconTint="@drawable/nav_item_color_state"

app:itemTextColor="@drawable/nav_item_color_state"

app:layout_behavior="com.meiji.toutiao.widget.behavior.BottomNavigationBehavior"

app:menu="@menu/bottom_navigation_main"/>上面是activity_main的布局代碼,第一個是菜單欄,第二個是內(nèi)容界面,第三個是bottom。bottom導(dǎo)航欄這里采用是BottomNavigationView,具體用法不在介紹。這里主要看一下BottomNavigationView的app:layout_behavior屬性,該屬性是協(xié)調(diào)布局特有的。網(wǎng)上的一版用法是app:layout_behavior="@string/appbar_scrolling_view_behavior"雖然表面上看是一個字符串,其實在里面調(diào)用的也是一個view類。這次我們通過自定義這個behavior類,實現(xiàn)底部菜單欄的顯隱性。java實現(xiàn)類public

class

BottomNavigationBehavior

extends

CoordinatorLayout.Behavior<View>

{

private

ObjectAnimator

outAnimator,

inAnimator;

public

BottomNavigationBehavior(Context

context,

AttributeSet

attrs)

{

super(context,

attrs);

}

//

垂直滑動

@Override

public

boolean

onStartNestedScroll(CoordinatorLayout

coordinatorLayout,

View

child,

View

directTargetChild,

View

target,

int

nestedScrollAxes)

{

return

nestedScrollAxes

==

ViewCompat.SCROLL_AXIS_VERTICAL;

}

@Override

public

void

onNestedPreScroll(CoordinatorLayout

coordinatorLayout,

View

child,

View

target,

int

dx,

int

dy,

int[]

consumed)

{

if

(dy

>

0)

{//

上滑隱藏

if

(outAnimator

==

null)

{

outAnimator

=

ObjectAnimator.ofFloat(child,

"translationY",

0,

child.getHeight());

outAnimator.setDuration(200);

}

if

(!outAnimator.isRunning()

&&

child.getTranslationY()

<=

0)

{

outAnimator.start();

}

}

else

if

(dy

<

0)

{//

下滑顯示

if

(inAnimator

==

null)

{

inAnimator

=

ObjectAnimator.ofFloat(child,

"translationY",

child.getHeight(),

0);

inAnimator.setDuration(200);

}

if

(!inAnimator.isRunning()

&&

child.getTranslationY()

>=

child.getHeight())

{

inAnimator.start();

}

}

}

}這個類的就是剛剛那個app:layout_behavior="com.meiji.toutiao.widget.behavior.BottomNavigationBehavior"屬性標(biāo)明的類,看起來很簡單,繼承了Behavior抽象類,然后實現(xiàn)了兩個方法。來看一下源碼如何解釋:onStartNestedScroll:這個方法主要用于監(jiān)聽協(xié)調(diào)布局的子view的滾動事件,當(dāng)此方法返回true,表示要消耗此動作,繼而執(zhí)行下面的onNestedPreScroll方法,我們在代碼中返回的是,滾動軸是不是豎直滾動軸。如果是的話,就返回tr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論