我使用RNFetchBlob下载图像,视频,徽标和pdf。如果存在视频,则使用视频;如果不存在视频,但使用背景,则使用背景。
当我的应用程序位于我的 Configuring.js 中时,这将异步下载所有资产并设置我的应用程序。
这是我用来将资产保存到窗口/全局变量的代码,以便在应用程序的所有屏幕上调用。
let dirs = RNFetchBlob.fs.dirs;
RNFetchBlob.fs.ls(dirs.DocumentDir)
.then( (files) => {
for(var i = 0; i < files.length; i++) {
let fileName = files[i].split('.');
if(fileName[0] === 'background') {
window.local_background = dirs.DocumentDir + '/' + files[i];
continue;
}
if(fileName[0] === 'video') {
window.local_video = dirs.DocumentDir + '/' + files[i];
continue;
}
if(fileName[0] === 'logo') {
window.local_logo = dirs.DocumentDir + '/' + files[i];
continue;
}
}
this.props.navigation.replace('Main');
})
当我使用react-navigation在屏幕之间导航时,我使用了通用的<Image/>
组件,其中的源设置为source={{uri: window.local_background}}
,但是我的问题是,当我浏览屏幕时,我导航到堆栈中还没有的新屏幕。如何加速/预加载它,以便在所有其他内容都已渲染之后就不开始加载?
是否有更好的方法在整个应用程序中使用全局背景?
我的背景 HAS 来自服务器,无法在应用程序的内部版本中本地存储。
答案 0 :(得分:2)
React Native上的图像缓存不尽如人意。经过大量搜索,我发现使用from System.Collections.Generic import List
import Autodesk.Revit.DB as DB
doc=__revit__.ActiveUIDocument.Document
uidoc=__revit__.ActiveUIDocument
sheet_collector=DB.FilteredElementCollector(doc)\
.OfCategory(DB.BuiltInCategory\
.OST_Sheets)\
.WhereElementIsNotElementType()\
.ToElements()
walls=DB.FilteredElementCollector(doc)\
.OfCategory(DB.BuiltInCategory.OST_Walls)\
.WhereElementIsNotElementType()\
.ToElements()
tallwallsids=[]
for wall in walls:
heightp=wall.LookupParameter('Unconnected Height')
if heightp and heightp.AsDouble()==10:
tallwallsids.append(wall.Id)
uidoc.Selection.SetElementIds(List[DB.ElementId](tallwallsids))
非常适合图像缓存和显示从Web下载的图像。您可以找到仓库here。
使用起来非常容易,它基本上替代了react-native-fast-image
提供的Image
组件。
设置非常简单(请注意,该软件包在Expo上不可用)
您可以通过以下方式安装
react-native
以下是使用它的示例:
# Install
yarn add react-native-fast-image
npm install react-native-fast-image
# Automatic linking. (other linking methods listed on their website)
react-native link react-native-fast-image
我基本上在需要从网络上加载任何图像时都使用它。