亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android仿IOS回彈效果 支持任何控件

2019-10-21 21:27:10
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android仿IOS回彈效果的具體代碼,供大家參考,具體內容如下

效果圖:

Android,IOS,回彈效果

導入依賴:

dependencies {  // ...  compile 'me.everything:overscroll-decor-android:1.0.4'}

RecyclerView

支持線性布局和網格布局管理器(即所有原生Android布局)。可以輕松適應支持自定義布局管理器。

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);// HorizontalOverScrollDecoratorHelper.setUpOverScroll(recyclerView, OverScrollDecoratorHelper.ORIENTATION_HORIZONTAL);// VerticalOverScrollDecoratorHelper.setUpOverScroll(recyclerView, OverScrollDecoratorHelper.ORIENTATION_VERTICAL);

ListView

ListView listView = (ListView) findViewById(R.id.list_view);OverScrollDecoratorHelper.setUpOverScroll(listView);

GridView

GridView gridView = (GridView) findViewById(R.id.grid_view);OverScrollDecoratorHelper.setUpOverScroll(gridView);

ViewPager

ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);OverScrollDecoratorHelper.setUpOverScroll(viewPager);

ScrollView, HorizontalScrollView

ScrollView scrollView = (ScrollView) findViewById(R.id.scroll_view);OverScrollDecoratorHelper.setUpOverScroll(scrollView);HorizontalScrollView horizontalScrollView = (HorizontalScrollView) findViewById(R.id.horizontal_scroll_view);OverScrollDecoratorHelper.setUpOverScroll(horizontalScrollView);

Any View - Text, Image…

View view = findViewById(R.id.demo_view);  // HorizontalOverScrollDecoratorHelper.setUpStaticOverScroll(view, OverScrollDecoratorHelper.ORIENTATION_HORIZONTAL);// VerticalOverScrollDecoratorHelper.setUpStaticOverScroll(view, OverScrollDecoratorHelper.ORIENTATION_VERTICAL);

高級用法

// Horizontal RecyclerViewRecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);new HorizontalOverScrollBounceEffectDecorator(new RecyclerViewOverScrollDecorAdapter(recyclerView));// ListView (vertical)ListView listView = (ListView) findViewById(R.id.list_view);new VerticalOverScrollBounceEffectDecorator(new AbsListViewOverScrollDecorAdapter(listView));// GridView (vertical)GridView gridView = (GridView) findViewById(R.id.grid_view);new VerticalOverScrollBounceEffectDecorator(new AbsListViewOverScrollDecorAdapter(gridView));// ViewPagerViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);new HorizontalOverScrollBounceEffectDecorator(new ViewPagerOverScrollDecorAdapter(viewPager));// A simple TextView - horizontalView textView = findViewById(R.id.title);new HorizontalOverScrollBounceEffectDecorator(new StaticOverScrollDecorAdapter(view));

RecyclerView 使用 ItemTouchHelper 進行拖動

從版本1.0.1起,效果可以與RecyclerView內置的滑動機制(基于ItemTouchHelper)平滑運行。但是,還需要一些很少顯式的配置工作:

// Normally you would attach an ItemTouchHelper & a callback to a RecyclerView, this way:RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);ItemTouchHelper.Callback myCallback = new ItemTouchHelper.Callback() {  ...};ItemTouchHelper myHelper = new ItemTouchHelper(myCallback);myHelper.attachToRecyclerView(recyclerView);// INSTEAD of attaching the helper yourself, simply use the dedicated adapternew VerticalOverScrollBounceEffectDecorator(new RecyclerViewOverScrollDecorAdapter(recyclerView, myCallback));

滾動狀態改變回調

// Note: over-scroll is set-up using the helper method.IOverScrollDecor decor = OverScrollDecoratorHelper.setUpOverScroll(recyclerView, OverScrollDecoratorHelper.ORIENTATION_HORIZONTAL);decor.setOverScrollStateListener(new IOverScrollStateListener() {  @Override  public void onOverScrollStateChange(IOverScrollDecor decor, int oldState, int newState) {    switch (newState) {      case STATE_IDLE:        // No over-scroll is in effect.        break;      case STATE_DRAG_START_SIDE:        // Dragging started at the left-end.        break;      case STATE_DRAG_END_SIDE:        // Dragging started at the right-end.        break;      case STATE_BOUNCE_BACK:        if (oldState == STATE_DRAG_START_SIDE) {          // Dragging stopped -- view is starting to bounce back from the *left-end* onto natural position.        } else { // i.e. (oldState == STATE_DRAG_END_SIDE)          // View is starting to bounce back from the *right-end*.        }        break;    }  }}

拖拽出View原本范圍時回調

當前拖拽的強度(偏移量)

// Note: over-scroll is set-up by explicity instantiating a decorator rather than using the helper; The two methods can be used interchangeably for registering listeners.VerticalOverScrollBounceEffectDecorator decor = new VerticalOverScrollBounceEffectDecorator(new RecyclerViewOverScrollDecorAdapter(recyclerView, itemTouchHelperCallback));decor.setOverScrollUpdateListener(new IOverScrollUpdateListener() {  @Override  public void onOverScrollUpdate(IOverScrollDecor decor, int state, float offset) {    final View view = decor.getView();    if (offset > 0) {      // 'view' is currently being over-scrolled from the top.    } else if (offset < 0) {      // 'view' is currently being over-scrolled from the bottom.    } else {      // No over-scroll is in-effect.      // This is synonymous with having (state == STATE_IDLE).    }  }});

自定義控件

public class CustomView extends View {  // ...}final CustomView view = (CustomView) findViewById(R.id.custom_view);new VerticalOverScrollBounceEffectDecorator(new IOverScrollDecoratorAdapter() {  @Override  public View getView() {    return view;  }  @Override  public boolean isInAbsoluteStart() {    // canScrollUp() is an example of a method you must implement    return !view.canScrollUp();  }  @Override  public boolean isInAbsoluteEnd() {     // canScrollDown() is an example of a method you must implement    return !view.canScrollDown();  }});

拖拽強度和回彈效果配置

/// Make over-scroll applied over a list-view feel more 'stiff'new VerticalOverScrollBounceEffectDecorator(new AbsListViewOverScrollDecorAdapter(view),    5f, // Default is 3    VerticalOverScrollBounceEffectDecorator.DEFAULT_TOUCH_DRAG_MOVE_RATIO_BCK,    VerticalOverScrollBounceEffectDecorator.DEFAULT_DECELERATE_FACTOR);// Make over-scroll applied over a list-view bounce-back more softlynew VerticalOverScrollBounceEffectDecorator(new AbsListViewOverScrollDecorAdapter(view),    VerticalOverScrollBounceEffectDecorator.DEFAULT_TOUCH_DRAG_MOVE_RATIO_FWD,    VerticalOverScrollBounceEffectDecorator.DEFAULT_TOUCH_DRAG_MOVE_RATIO_BCK,    -1f // Default is -2    );

禁用回彈效果和開啟回彈效果

IOverScrollDecor decor = OverScrollDecoratorHelper.setUpOverScroll(view);// Detach. You are strongly encouraged to only call this when overscroll isn't// in-effect: Either add getCurrentState()==STATE_IDLE as a precondition,// or use a state-change listener.decor.detach();// Attach.decor.attach();

源碼地址:Android仿IOS回彈效果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品www| 97视频免费在线看| 91精品国产综合久久香蕉最新版| 伊人亚洲福利一区二区三区| 欧美高清在线视频观看不卡| 国产性猛交xxxx免费看久久| 欧美激情亚洲另类| 日韩亚洲第一页| 成人欧美一区二区三区在线| 精品视频偷偷看在线观看| 欧美黄色性视频| 亚洲欧美日韩精品久久| 欧美日韩中国免费专区在线看| 欧美精品免费看| www.亚洲天堂| 久久视频在线视频| 欧美华人在线视频| 成人xvideos免费视频| 7m精品福利视频导航| 国产欧美va欧美va香蕉在| 色婷婷av一区二区三区久久| 欧美黄色成人网| 中文字幕欧美日韩| 夜夜嗨av色综合久久久综合网| 国产综合香蕉五月婷在线| 日韩成人av一区| 国产精品久久久久久亚洲调教| 欧美夫妻性生活视频| 九九热精品视频在线播放| 欧美视频一区二区三区…| 亚洲风情亚aⅴ在线发布| 精品露脸国产偷人在视频| 色妞色视频一区二区三区四区| 国产午夜精品一区二区三区| 九九视频这里只有精品| 精品国偷自产在线视频| 欧美一区二区三区四区在线| 精品精品国产国产自在线| 亚洲国产福利在线| 亚洲第一页中文字幕| 91久久国产综合久久91精品网站| 国产综合久久久久| 久久国产精品影片| 日韩欧美一区二区在线| 亚洲经典中文字幕| 日本一区二区不卡| 成人黄色av播放免费| 一区国产精品视频| 久久夜色精品国产| 日韩乱码在线视频| 久热爱精品视频线路一| 亚洲精品成人网| 国产伦精品一区二区三区精品视频| 亚洲深夜福利网站| 欧美壮男野外gaytube| 91香蕉国产在线观看| 国产精品va在线| 欧美精品xxx| 亚洲综合在线做性| 欧美在线亚洲一区| 亚洲女人被黑人巨大进入| 国产激情综合五月久久| 欧美性受xxxx黑人猛交| 黑人精品xxx一区一二区| 97精品在线观看| 国产精品99导航| 国产一区香蕉久久| 国产精品h在线观看| 欧美性猛交xxxx免费看| 国产精品扒开腿做爽爽爽视频| 日韩av最新在线观看| 亚洲人成欧美中文字幕| www.亚洲人.com| 欧美激情视频三区| 欧美日韩ab片| 日韩在线视频免费观看| 亚洲在线免费观看| 亚洲一区二区免费在线| 欧美一区亚洲一区| 国产精品视频一| 欧美日韩国产精品专区| 欧美与欧洲交xxxx免费观看| 欧美精品免费在线| 亚洲乱码国产乱码精品精| 国产亚洲综合久久| 992tv成人免费视频| 国产一区红桃视频| 欧美在线一级va免费观看| 亚洲精品成人久久电影| 久久国产精品久久精品| 北条麻妃一区二区三区中文字幕| 亚洲精品美女久久| 欧美色播在线播放| 亚洲天堂日韩电影| 欧美在线观看网址综合| 欧美另类老肥妇| 91黑丝高跟在线| 亚洲国产精品va在线看黑人动漫| 91av在线精品| 亚洲少妇中文在线| 国产成人自拍视频在线观看| 欧美福利视频网站| 国产精品入口日韩视频大尺度| 精品在线观看国产| 尤物99国产成人精品视频| 欧美另类极品videosbest最新版本| 成人久久精品视频| 高清亚洲成在人网站天堂| 国产精品成人观看视频国产奇米| 国产精品入口夜色视频大尺度| 国产精品永久免费| 国产亚洲成av人片在线观看桃| 国产精品白嫩初高中害羞小美女| 亚洲肉体裸体xxxx137| 久久福利视频网| 国产综合福利在线| 在线观看欧美www| 国产成人精品亚洲精品| 日韩欧美中文字幕在线观看| 欧亚精品在线观看| 日韩免费观看视频| 日韩久久精品成人| 一本一道久久a久久精品逆3p| 国产色综合天天综合网| 国产精品福利在线观看| 国产精品专区h在线观看| 亚洲人成自拍网站| 精品欧美一区二区三区| 欧美中文在线免费| 欧美精品在线观看| 亚洲男人天堂手机在线| 久久久久亚洲精品成人网小说| 午夜精品一区二区三区在线播放| 成人黄色网免费| 伊人久久大香线蕉av一区二区| 九九热精品视频在线播放| 亚洲午夜久久久久久久| 91精品综合久久久久久五月天| 欧美视频免费在线| 疯狂蹂躏欧美一区二区精品| 国产精品久久久久久久久粉嫩av| 91精品国产91久久久久久最新| 91精品久久久久久久久青青| 国产美女久久久| 亚洲免费伊人电影在线观看av| 精品一区电影国产| 亚洲一区制服诱惑| 91久久久精品| 丝袜美腿亚洲一区二区| 亚洲一二在线观看| 久久久精品亚洲| 国产日韩欧美一二三区| 久久国产精品99国产精| 欧美成人午夜激情在线| 亚洲一区制服诱惑| 精品亚洲aⅴ在线观看| 国产在线视频不卡| 色综久久综合桃花网| 亚洲区中文字幕| 亚洲影院高清在线| 欧美激情一区二区三区在线视频观看| 久久久久久国产精品三级玉女聊斋| 久久国产精品久久久久| 欧美精品999|