import React from 'react';
import {StyleSheet, View, Text, PixelRatio, FlatList, Image, TouchableHighlight} from 'react-native';
import {Navigation, SharedElementTransition} from 'react-native-navigation';
import images from './images';
const ROW_HEIGHT = 650;
const COLS = 2;
class Masonry extends React.Component {
onAssetPress = (image, key) => {
this.props.navigator.push({
screen: 'example.Transitions.SharedElementTransitions.Masonry.Item',
sharedElements: [key],
passProps: {
image,
sharedImageId: key,
},
});
};
renderAsset = (asset, row, column, index) => {
const key = `row_${row}_column_${column}_asset_${index}`;
return (
{
this.onAssetPress(asset.source, key);
}}
style={[styles.assetContainer, {flex: asset.weight}]}
>
);
};
renderItem = ({item, index}) => {
return (
{[...new Array(COLS)].map((column, columnIndex) => (
{item.images[columnIndex].map((asset, assetIndex) => this.renderAsset(asset, index, columnIndex, assetIndex))}
))}
);
};
render() {
return (
({length: ROW_HEIGHT, offset: ROW_HEIGHT * index, index})}
/>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#ffffff',
},
item: {
flex: 1,
flexDirection: 'row',
},
assetContainer: {
margin: 5,
borderRadius: 6,
borderWidth: StyleSheet.hairlineWidth,
},
asset: {
flex: 1,
borderRadius: 6,
},
});
export default Masonry;