1. 程式人生 > >React Native之瀑布流

React Native之瀑布流

今天在講解一下關於原生的瀑布流的實現方式,那麼進入主題。有一種方式是自己寫一個瀑布流的佈局。但是在React Native裡面如果沒有進行自定義高度是完全沒有辦法去實現圖片這些的出現。但是我在原生的安卓裡面不需要圖片高度就可以進行設定。但是遇到一個很尷尬的問題是,專案很趕,而且沒有IOS的開發人員。所以這個時候暫時放棄了關於原生的呼叫。就自己寫一個。其實也不算自己寫的。因為在網上發現一個還不錯的庫:autoresponsive-react-native ,這個庫使用方式我也會貼出來。我也會說明怎麼使用的~

首先我們得獲取圖片的高度這些是不是呢。所以看以下程式碼:

      this.state.message.map((o, i) => {
          var Task = Image.getSize(o[2], (numberwidth, numberheight) => {
            var bili = numberheight / numberwidth;

            array.push(bili)
            arrayWidth.push(o[2])

            if (i == this.state.message.length - 1) {

              this.setState({ dataSourcetwo: ds.cloneWithRows([1]), isV: true })
            }
          }, () => {

          })
        })
其中的o[2]是圖片的連線地址,numberwidth和numberheight是我們知道的寬度和高度。所以我們可以儲存起來~~是不~~~這個時候我們可以在render之前先進行網路呼叫。而且我們也不必當心一個問題就是圖片圖還沒下載下來,但是已經render了呢。。實際上我們在下載完之後會再一次進行render一次。所以這個問題根本沒有必要糾結。

下面我們來使用上面說的那個庫:

   <AutoResponisve itemMargin={_getWidth(15)} >
        {
          arrayWidth.map((i, key) => {
            return (
              <TouchableOpacity key={key} style={{ height: array[key] * (width - _getWidth(45)) / 2, width: (width - _getWidth(45)) / 2 }} onPress={() => {

              }}>
                <View style={{ height: array[key] * (width - _getWidth(45)) / 2, width: (width - _getWidth(45)) / 2, }}>
                  <Image source={{ uri: i }} style={{ height: array[key] * (width - _getWidth(45)) / 2, width: (width - _getWidth(45)) / 2, resizeMode: 'cover' }} />
                  <View style={{
                    height: _getHeight(33),
                    width: (width - _getWidth(45)) / 2,
                    backgroundColor: 'white',
                    position: 'absolute',
                    bottom: 0,
                    flexDirection: 'row',
                    justifyContent: 'center'
                    , borderColor: _backgroundColor,
                    borderWidth: 0.5
                  }}>
                    <Text style={stylesCode.ListItemTextstyle}>hahahaha</Text>
                  </View>
                </View>
              </TouchableOpacity>
            );
          }, this)
        }
      </AutoResponisve>
首先把AutoResponisve 這個東西進行let AutoResponisve = require('autoresponsive-react-native');獲取到。然後佈局如上面剩下的就是圖片的放大和縮小而已。這個時候我們獲取到的就是我們需要的瀑布流了。這個方式也適合ios。但是我們有一個問題就是圖片這些的回收怎麼辦?因為專案比較趕我是這樣處理的,寫一個Listview,就使用第一行,把我們的瀑布流包裹進去。實際上面的對安卓手機進行測試過。沒有什麼太大的效能問題。

相關推薦

React Native瀑布

今天在講解一下關於原生的瀑布流的實現方式,那麼進入主題。有一種方式是自己寫一個瀑布流的佈局。但是在React Native裡面如果沒有進行自定義高度是完全沒有辦法去實現圖片這些的出現。但是我在原生的安

React Native 實現瀑布列表頁,分組+組內橫向的列表頁.....

React Native 實現瀑布流列表頁,分組+組內橫向的列表頁….. 隨著React Native的更新,因為其跨平臺的優越性,越來越多的公司和專案採用其作為其快速開發和迭代的基礎語言. 但是其並不是任何控制元件其都已經涵蓋了,就拿我們常見的列表頁來說,

React NativeTouchable四組件

width font clas 容易 原生 ber 支持 cit out 一、TouchableHighlight 概念: 本組件用於封裝視圖,使其可以正確響應觸摸操作。當按下的時候,封裝的視圖的不透明度會降低,同時會有一個底層的顏色透過而被用戶看到,使得視圖變暗或變亮。

React Native登錄界面的布局

處理器 圖片 blank 轉載 圓角 print extends cit hit 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 代碼註釋比較詳細 /** * Sample React Native App * https://github.com/fa

react-native遠程圖片修改後APP不更新

reactnative react-native react native 刷新圖片 base64今天在做客戶的項目時,有一個需求是App上要顯示遠端的圖片,而遠端的圖片有可能會更新,但圖片名不變。在react-native中,顯示圖片是用的自帶的Image組件,大家都知道react在更新組件之前都會判斷pr

使用WebStorm開發React-native基礎

ttr regexp 渲染 hang reg 路徑 tostring png text 配置問題: (1)找不到SDK路徑,或者沒有SDK對應的版本:SDK必須是android-23才可以(更新SDK) 解決方法:環境變量,必須設置Android_HOME

react-native模擬器調試

adb div connect oid native 令行 input 模擬 key 手動觸發搖一搖:adb shell input keyevent 82(有時模擬器搖一搖無效) android studio檢測不到模擬器: 命令行cd到模擬器安裝目錄,找到adb.exe

React Nativethis詳解

過程 show super try this registry alert item rop this引起的錯誤詳解 我們在學習React Native的過程中,肯定經常遇見過undefined is not an object這樣的問題吧,尤其是剛開始學習的

React Native屬性類型檢查機制詳解 PropType 變成 prop-types

word man div color object platform UC 靜態 ESS 屬性確認的作用 使用 React Native 創建的組件是可以復用的,所以我們開發的組件可能會給項目組其他同事使用。但別人可能對這個組件不熟悉,常常會忘記使用某些屬性,或者某些屬性傳

js瀑布的實現

cti 新的 info orm charset 遍歷 appdata cli ref <!DOCTYPE html> <html lang="en"> <head> <meta charset="U

react nativelistview加下拉重新整理上拉分頁

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

ios React-Native 找不到標頭檔案

我的解決辦法有點簡單暴力: 將package.json中的"react"直接改成16.2.0, react-native 改成了0.53.3,如下: "dependencies": {     "react": "16.2.0",     "re

React Native函式作為引數傳遞給另外一個函式去呼叫

1 用法 我們一般喜歡把js裡面的函式作為引數傳遞給另外一個函式,然後再呼叫這個函式,有點像C語言裡面的函式指標         2 程式碼測試 寫了一個函式,2個引數分別是函式,然後更具資料決定呼叫哪個函式 /** *

React Native通知欄訊息提示(android)

React Native之通知欄訊息提示(android)   一,需求分析與概述 1.1,推送作為手機應用的基本功能,是手機應用的重要部分,如果自己實現一套推送系統費時費力,所以大部分的應用都會選擇使用第三方的推送服務,如極光推送。 1.2,jpush-react-native 

React Native通知欄訊息提示(ios)

React Native之通知欄訊息提示(ios)   一,需求分析與概述 詳情請檢視:React Native之通知欄訊息提示(android) 二,極光推送註冊與整合 2.1,註冊 詳情請檢視:React Native之通知欄訊息提示(android) 2.2,整合(ios) 第

javascript瀑布圖片覆蓋

 今天在練習javascript實現瀑布流時遇到了一個看上去非常神奇(實際上無腦)的問題,用js載入十張圖片之後的頁面效果是這樣的: 但是想讓它們按高低順序排列即儘量不留下大量空白空間,於是尋找第一行圖片高度的最小值,然後將下一行的圖片放在高度最小的圖片下面,於是寫了下面的程式段

React Native Visual Studio Code 推薦安裝外掛

 Visual studio code 是Microsoft在2015年4月30推出 輕量級開發程式碼編輯器。相比Visual studio小了很多,Visual studio安裝Xamarin移動開發100G的C盤快要爆滿了,無力吐槽,普通電腦帶不動Visual studio;還好

react-native檔案上傳下載

目錄 檔案上傳 1.檔案選擇 2.檔案上傳 1.FormData物件包裝 2.上傳示例 檔案下載 最近react-native專案上需要做檔案上傳下載的功能,由於才接觸react-native不久,好多東西不熟悉,前

React NativeText控制元件屬性和樣式

屬性 numberOfLines 文字行數限制,新增後超過限制行數文字會在末尾預設以…的形式省略。 ellipsizeMode 設定文字縮略格式,配合numberOfLines使用,values: * tail:在末尾…省略(預設值) * c

React Nativejs呼叫Android原生使用Callback傳遞結果給js

1 問題 上面的文章只是呼叫安卓原生顯示Toast,但是我們一般會需要呼叫安卓的程式碼然後去拿回結果給js,但是我們知道在android層js呼叫的這個函式返回值必須的void,所以我們需要用到Callback,Callback一般用於同步,也就是說直接呼叫