日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

android 史上最简单behavior,安卓behavior详解1--系统behavior的简单应用

發布時間:2023/12/20 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 史上最简单behavior,安卓behavior详解1--系统behavior的简单应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.簡介

Behavior的中文翻譯是”行為”的意思.

Behavior是Android新出的Design庫里新增的布局概念。Behavior只有是CoordinatorLayout的直接子View才有意義。可以為任何View添加一個Behavior。

Material Design里面的CoordinatorLayout是一個非常強大的控件,它接管了child組件之間的交互。讓你滑動交互使用更加方便簡單,效果也更加強大,不需要像以前那樣自己處理一坨什么亂七八槽的滑動,事件傳遞之類的處理了。

Behavior是一系列回調。讓你有機會以非侵入的為View添加動態的依賴布局,和處理父布局(CoordinatorLayout)滑動手勢的機會。如果我們想實現控件之間任意的交互效果,完全可以通過自定義 Behavior 的方式達到。

在學習自定義behavior之前我們先看一看官方內置的behavior

二.BottomSheetBehavior

BottomSheetBehavior實現的效果就是一個布局底部彈出,類似于餓了么查看購物車的效果,這種效果我們可以有很多種方式實現,使用BottomSheetBehavior你會發現簡直只需要一行代碼.

1.頁面布局

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_group_car_boottom_sheet"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.testdemo.king.kingtestdemo.GroupCarBoottomSheetActivity">

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:text="顯示bottomsheetBehavior"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_height="wrap_content" />

android:text="顯示bottomsheetBehaviorDialog"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_height="wrap_content" />

LinearLayout>

android:layout_width="match_parent"

android:layout_gravity="center"

android:layout_height="match_parent"

android:background="@color/colorAccent"

app:behavior_hideable="true"

app:behavior_peekHeight="100dp"

app:elevation="4dp"

app:layout_behavior="@string/bottom_sheet_behavior">

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:text="展示Bottom Sheets"

android:textColor="#FFFFFF" />

RelativeLayout>

android.support.design.widget.CoordinatorLayout>

屬性說明

//折疊的高度

app:behavior_peekHeight="10dp" setPeekHeight

//是否可以隱藏

app:behavior_hideable="true" setHideable

//是否跳過折疊狀態

app:behavior_skipCollapsed="true" setSkipCollapsed

2.代碼實現

只需要獲取到這個behavior

bottomSheetBehavior=BottomSheetBehavior.from((View)rlBottom);

然后點擊的時候按鈕時候控制其隱藏和出現即可

case R.id.bt1:

if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) {

bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);

} else {

bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);

}

break;

狀態說明:

STATE_COLLAPSED: 關閉Bottom Sheets,顯示peekHeight的高度,默認是0

STATE_DRAGGING: 用戶拖拽Bottom Sheets時的狀態

STATE_SETTLING: 當Bottom Sheets view釋放時記錄的狀態。

STATE_EXPANDED: 當Bottom Sheets 展開的狀態

STATE_HIDDEN: 當Bottom Sheets 隱藏的狀態

3.狀態監聽

我們可以通過監聽狀態的改變做一些自定義的操作,比如這樣.

bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {

@Override

public void onStateChanged(@NonNull View bottomSheet, int newState) {

// /這里是bottomSheet 狀態的改變,根據slideOffset可以做一些動畫

}

@Override

public void onSlide(@NonNull View bottomSheet, float slideOffset) {

//這里是拖拽中的回調,根據slideOffset可以做一些動畫

Log.e("king",slideOffset+"");

if(slideOffset>0){

if(slideOffset>0.5)slideOffset=0.5f;

ViewGroup.LayoutParams para1;

para1 = bottomSheet.getLayoutParams();

para1.width = (int) (rlBottomWidth*(0.5+slideOffset));

bottomSheet.setLayoutParams(para1);

}

}

});

三.BottomSheetDialog

BottomSheetDialog是一個基于bottomSheetbehavior實現的dialog

代碼實現

private void initBottomSheetDialog() {

dialog = new BottomSheetDialog(this);

View dialogView = LayoutInflater.from(this).inflate(R.layout.item_text, null, false);

((TextView) dialogView.findViewById(R.id.text)).setText("bottomsheetDialog");

dialog.setContentView(dialogView);

dialog.hide();

}

然后只需要調用dialog.hide();或者show()方法就能實現dialog的顯示隱藏了.

當然,BottomSheetDialog也能調用狀態監聽,具體實現如下

private void setBehaviorCallback() {

View view = dialog.getDelegate().findViewById(android.support.design.R.id.design_bottom_sheet);

final BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(view);

bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {

@Override

public void onStateChanged(@NonNull View bottomSheet, int newState) {

if (newState == BottomSheetBehavior.STATE_HIDDEN) {

dialog.dismiss();

bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);

}

}

@Override

public void onSlide(@NonNull View bottomSheet, float slideOffset) {

}

});

}

四.SwipeDismissBehavior

SwipeDismissBehavior是一個實現側滑刪除的效果,比較簡單

private void initSwipeDismissBehavior() {

SwipeDismissBehaviorswipe = new SwipeDismissBehavior();

swipe.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_ANY);

swipe.setListener(

new SwipeDismissBehavior.OnDismissListener() {

@Override

public void onDismiss(View view) {

}

@Override

public void onDragStateChanged(int state) {

}

});

CoordinatorLayout.LayoutParams coordinatorParams =

(CoordinatorLayout.LayoutParams)tv1 .getLayoutParams();

coordinatorParams.setBehavior(swipe);

}

五.AppBarLayout$ScrollingViewBehavior

ScrollingViewBehavior的簡單應用大家參考一下這篇文章吧

http://blog.csdn.net/aqi00/article/details/56834285

系統默認提供的behavior畢竟只能實現一部分功能,下一篇博客我們將介紹如何使用自定義behavior來實現復雜的功能.

總結

以上是生活随笔為你收集整理的android 史上最简单behavior,安卓behavior详解1--系统behavior的简单应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。