1. 程式人生 > >react-native封裝原生下拉重新整理元件

react-native封裝原生下拉重新整理元件

之前改進過一個react-native-pull元件解決了iOS上重新整理頭部出現空白問題,並且將listview改成了flatlist。
github如下:
react-native-pullview這是純js寫的Android&&iOS都可以使用。在iOS上面效能還是可以的,但是在Android上滑動時雖然也可以使用但是總是感覺有點卡頓,不是很如意。
因為rn在Android上滑動事件就不是很流暢,Facebook也一直被這個問題困擾。所以無奈最終只好自己封裝一個原生的下拉重新整理元件來解決這個問題。
官網為我們提供了封裝原生元件的方法和例子但是下拉重新整理這個和明顯不是一個簡單的view而是一個viewgroup(關於封裝View參考

封裝原生View或者rn封裝原生jsbridge與H5互動),可是官網上面對於封裝viewgroup的例子卻並沒有呵呵呵呵呵呵!
在各種搜尋下終於完成了這個封裝。
原生控制元件使用的是這個SmartRefreshLayout功能很強大用的人也很多。
1:首先整合

compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-7'

關鍵程式碼:

/**
 * Created by wuyunqiang on 2018/1/16.
 */

public class PullLayout extends ViewGroupManager
<SmartRefreshLayout> {
@Override public String getName() { return "PullLayout"; } @Override protected SmartRefreshLayout createViewInstance(ThemedReactContext reactContext) { SmartRefreshLayout refreshLayout = (SmartRefreshLayout) LayoutInflater.from(reactContext).inflate(R.layout.activity_pull,null
); header = new Header(reactContext); return refreshLayout; } @Override public void addView(SmartRefreshLayout parent, View child, int index) { super.addView(parent, child, index); parent.addView(header,0);//設定header parent.onFinishInflate();//在這個方法裡面新增子佈局 這裡要主動呼叫否則無法顯示下拉重新整理內容 } //傳送給RN重新整理事件 載入資料 public void refresh(ThemedReactContext reactContext,SmartRefreshLayout refreshlayout){ if(reactContext!=null){ WritableMap params = Arguments.createMap(); params.putString("from","native"); Log.i(TAG,"開始重新整理"); if(CanRefresh){ CanRefresh = false; this.dispatchEvent(reactContext,refreshlayout,"onRefreshReleased",params); } } } public void dispatchEvent(final ReactContext reactContext, final SmartRefreshLayout refreshlayout, final String eventName, @android.support.annotation.Nullable final WritableMap params) { if (reactContext==null) { Log.i(TAG, "reactContext==null"); refreshlayout.finishRefresh(); }else{ Log.i(TAG, "傳送訊息事件 " +"refreshlayout View id : " + refreshlayout.getId()); Log.i(TAG, "key:" + this.Key+eventName); //原生模組傳送事件 reactContext .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) .emit(this.Key+eventName, params); } }

效果如圖:非常流暢不會卡頓
pullLayout.gif

完整程式碼GitHub:AndroidToRN歡迎start

相關推薦

react-native封裝原生重新整理元件

之前改進過一個react-native-pull元件解決了iOS上重新整理頭部出現空白問題,並且將listview改成了flatlist。 github如下: react-native-pullvi

react-native之上載入,重新整理元件封裝

react-native 自定義封裝重新整理元件 幾個月沒寫部落格了,最近一直在寫react 和react-native,前幾天剛發了一版基於react-native混合開發的App,這幾天趕快總結下。 寫過java的同學,再去學習react和rea

基於better-scroll封裝一個上載入重新整理元件

<template> <div class="scroll" ref="wrapper"> <!-- 資料列表 --> <div class="list-wrapper"> <slot name="content"&g

React Native封裝原生元件釋出到npm

因為一個任務,要寫原生的獲取使用者手機資料夾,實現使用者自定義資料夾的功能,寫好了之後嘗試封裝成元件。1. 首先,有一個rn專案,用Adnroid Studio開啟 android -> app -> build.gradle如圖新建一個 Android Modu

打造通用的Android重新整理元件 適用於ListView GridView等各類View

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Flutter之封裝一個重新整理載入的listview

封裝一個簡單的listview,下拉重新整理上拉載入 Getting Started 1.需求場景 在開發的過程中,經常要用到一個具有下拉重新整理和上拉載入更多功能的listview ,程式碼的實現思路基本是差不多的。所以有必要封裝一個通用的listview,方便使用。 2.需要用到

vue-上載入、重新整理元件

vue在移動端開發過程中,上拉載入、下拉重新整理是頁面的基本需求,現在給大家介紹一種基於touch事件封裝的重新整理元件。 元件支援傳參、傳遞事件、請求成功非同步回撥、上拉與觸底觸發載入或重新整理。 父子元件間的通訊 這裡我們有兩個頁面,父元件note.vue與重新整理元件baseScroll.vue。

mui 的小坑 上重新整理元件會預設阻止a標籤的跳轉

mui在上拉和下拉重新整理元件 如果裡面存了a標籤阻止了a標籤的預設跳轉行為 解決: 1 去修改原始碼,但是過於繁瑣 2 使用js 註冊一個tap 點選事件 用 location.href 進行跳轉 function eventLis

使用better-scroll配合vue實現上載入重新整理元件

前提背景:大前端的時代造就了前端的業務邏輯越來越重,原有的MVP設計開發模式(jquery時代)造成了前端介面和資料操作都集中在MVP模式中的P層架構即控制器上,P層承擔了大量的邏輯程式碼和操作檢視DOM程式碼,兩者互動在一起耦合性很強並且很重,而V(檢視層)、M(資料層)的

android之官方重新整理元件SwipeRefreshLayout

SwipeRefreshLayout是谷歌官方Sdk提供的下拉元件,繼承自ViewGroup,在support v4相容包下,但必須把你的support library的版本升級到19.1。先看看效果 SwipeRefreshLayout常用API 1、

jquery封裝樹形選擇元件

style樣式:.treeBox{width: 400px; border: 1px solid black; margin: 0px auto; text-align: center; padding:

Android重新整理元件—SwipeRefreshLayout

介紹 一個功能強大的自定義下拉重新整理元件。 SwipeRefreshLayout也是一種下拉重新整理控制元件,不同的它的重新整理狀態效果和傳統的PuulToRefresh完全不一樣。 SwipeRefreshLayout 是谷歌公司推出的用於下拉重新

基於React Native官方元件FlatList,增加可定製化“重新整理”、“載入更多”元件API的新列表元件react-native-refresh-loadmore-flatlist

react-native-refresh-loadmore-flatlist 基於React Native官方元件FlatList,增加可定製化“下拉重新整理”、“下拉載入更多”元件API的新列表元件,具體實現功能如下: 自定義下拉重新整理元件API 自定義上拉Lo

這是一個實現重新整理react native元件 react-native-pullview

https://github.com/greatbsky/react-native-pull-demo/blob/master/README.md Demo for react-native-pull 這是一個實現下拉重新整理的react native元件,可支援a

react native之listview加重新整理分頁

直接上程式碼 var REQUEST_URL = 'xxxx&page='; import React, { Component } from 'react'; import { AppRegistry, Image, StyleSheet, Text, Vie

react native自定義實現重新整理載入

1·定義元件 PageListView.js  /** * 上拉重新整理/下拉載入更多 元件 */ import React, { Component } from 'react'; import { Text, View, ListView, FlatList

react-native-pull實現上載入重新整理

前言 我們在做原生app開發的時候,很多場景都會用到下拉重新整理、上拉載入的操作,Android中如PullToRefreshListView,iOS中如MJRefresh等都是比較好用,且實現上比較簡單的第三方庫。他們的實現原理大體相同,都是在列表的基礎上新增頭部和尾

自己封裝的工具類,使用原生SwipeRefreshLayout+RecycleView實現重新整理和載入更多

實現SwipeRefreshLayout+RecycleView實現重新整理 在你的xml檔案裡寫上如下程式碼: <android.support.v4.widget.SwipeRefreshLayout

React Native_手把手教你做專案(五.重新整理RefreshControl&封裝自定義Cell)

接下來我們繼續下拉重新整理的功能,主要是快取資料的拼接與後臺伺服器的配合。把資料最後的id傳給後臺,後臺根據id返回給你新的id之後的資料,因為沒有伺服器,所以這裡的程式碼僅僅做演示使用。 下拉重新整理RefreshControl list.js

React Native學習筆記之--ListView和RefreshControl實現重新整理

React Native學習筆記之–ListView和RefreshControl實現下拉重新整理 今天利用React Native中的ListView來實現原生開發中的UITableView(Android中就叫ListView)的介面效果。 資料數利用Ch