From 4a646c40b54cb3703259fa450b2a6f7ced376633 Mon Sep 17 00:00:00 2001 From: Harry Gale Date: Sat, 25 Feb 2017 14:46:59 -0800 Subject: [PATCH 1/5] Reduce overdraw --- js/Background.js | 6 +----- js/Style.js | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/js/Background.js b/js/Background.js index c81f8ef..dc1a358 100644 --- a/js/Background.js +++ b/js/Background.js @@ -1,6 +1,6 @@ import React from 'react' import { Image, View } from 'react-native' -import bgImage from './assets/bg_transparent.png' +import bgImage from './assets/bg_solid.png' import style from './Style' @@ -13,16 +13,12 @@ export const BaseView = (props) => { } export const BgView = (props) => { - const propStyle = { - backgroundColor: 'transparent' - } return ( ) diff --git a/js/Style.js b/js/Style.js index 2e55a83..1bd048f 100644 --- a/js/Style.js +++ b/js/Style.js @@ -5,7 +5,6 @@ export default StyleSheet.create({ flexDirection: 'column', flex:1, justifyContent:'center', - backgroundColor: 'transparent', paddingTop: 20, paddingLeft: 24, paddingRight: 24, @@ -20,7 +19,6 @@ export default StyleSheet.create({ imageContainer: { height: 200, flex: 0.8, - resizeMode: 'cover', justifyContent:'flex-end' }, cellTitle: { @@ -34,7 +32,6 @@ export default StyleSheet.create({ flexDirection: 'column', justifyContent: 'flex-start', alignItems: 'stretch', - backgroundColor: '#2B2C2C', paddingTop: 80, paddingRight: 12, paddingBottom: 20, @@ -43,7 +40,6 @@ export default StyleSheet.create({ pageBackground: { flex: 1, width: null, - height: null, - backgroundColor: '#2B2C2C' + height: null } }) From c3c94498a8ef916a4a63226e0a94c86a5d1eb18f Mon Sep 17 00:00:00 2001 From: Harry Gale Date: Sat, 25 Feb 2017 15:26:52 -0800 Subject: [PATCH 2/5] Rewrite to use a recyclerview --- js/HomeScreen.js | 40 ++++++++++++++-------------------------- js/ImageRow.js | 12 ++++++++++++ js/Style.js | 5 ++++- 3 files changed, 30 insertions(+), 27 deletions(-) create mode 100644 js/ImageRow.js diff --git a/js/HomeScreen.js b/js/HomeScreen.js index 74d2e17..b855baf 100644 --- a/js/HomeScreen.js +++ b/js/HomeScreen.js @@ -1,42 +1,30 @@ import React from 'react' -import { Text, View, Button, Dimensions, Image, ScrollView } from 'react-native' +import { ListView } from 'react-native' import { FlickrImages } from './FlickrImages' - +import ImageRow from './ImageRow' import { BgView } from './Background' import style from './Style' class HomeScreen extends React.Component { - renderCells (data) { - return data.map((cell, index) => { - const {uri} = cell - return ( - - - - - ) - }) - } - - renderImageCells (cellData) { - return ( - - {this.renderCells(cellData)} - - ) + constructor(props) { + super(props) + const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1.uri !== r2.uri}) + this.state = { + dataSource: ds.cloneWithRows(FlickrImages) + } } render() { - const { height } = Dimensions.get('window') - let cells = this.renderImageCells(FlickrImages) return ( - - {cells} - + } + /> - ); + ) } } diff --git a/js/ImageRow.js b/js/ImageRow.js new file mode 100644 index 0000000..eaa9b35 --- /dev/null +++ b/js/ImageRow.js @@ -0,0 +1,12 @@ + +import React from 'react' +import { View, Image } from 'react-native' + +import style from './Style' + +const ImageRow = (props) => ( + + + +) +export default ImageRow diff --git a/js/Style.js b/js/Style.js index 1bd048f..22a2354 100644 --- a/js/Style.js +++ b/js/Style.js @@ -14,7 +14,10 @@ export default StyleSheet.create({ }, cellContainer: { flexDirection: 'row', - paddingBottom: 10 + paddingTop: 10, + paddingLeft: 24, + paddingRight: 24, + elevation: 2 }, imageContainer: { height: 200, From 80af5d8ef98d8ebc2b759d82e819ae5491b88853 Mon Sep 17 00:00:00 2001 From: Harry Gale Date: Sat, 25 Feb 2017 16:04:00 -0800 Subject: [PATCH 3/5] Rewrite list of images to use a native recycler view --- .../com/performanceexample/CustomAdapter.java | 85 +++++++++++++++++++ .../com/performanceexample/ListViewCell.java | 17 ++++ .../performanceexample/ListViewPackage.java | 33 +++++++ .../performanceexample/MainApplication.java | 5 +- .../com/performanceexample/MyViewHolder.java | 17 ++++ .../ReactListViewManager.java | 64 ++++++++++++++ .../src/main/res/layout/image_list_row.xml | 13 +++ js/AndroidImageList.js | 13 +++ js/HomeScreen.js | 18 ++-- 9 files changed, 254 insertions(+), 11 deletions(-) create mode 100644 android/app/src/main/java/com/performanceexample/CustomAdapter.java create mode 100644 android/app/src/main/java/com/performanceexample/ListViewCell.java create mode 100644 android/app/src/main/java/com/performanceexample/ListViewPackage.java create mode 100644 android/app/src/main/java/com/performanceexample/MyViewHolder.java create mode 100644 android/app/src/main/java/com/performanceexample/ReactListViewManager.java create mode 100644 android/app/src/main/res/layout/image_list_row.xml create mode 100644 js/AndroidImageList.js diff --git a/android/app/src/main/java/com/performanceexample/CustomAdapter.java b/android/app/src/main/java/com/performanceexample/CustomAdapter.java new file mode 100644 index 0000000..807de4a --- /dev/null +++ b/android/app/src/main/java/com/performanceexample/CustomAdapter.java @@ -0,0 +1,85 @@ +package com.performanceexample; + +import android.graphics.Color; +import android.graphics.drawable.Animatable; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.facebook.react.bridge.ReadableMap; +import com.facebook.drawee.backends.pipeline.Fresco; +import com.facebook.drawee.view.SimpleDraweeView; +import com.facebook.drawee.interfaces.DraweeController; +import com.facebook.imagepipeline.request.ImageRequest; +import com.facebook.imagepipeline.request.ImageRequestBuilder; +import com.facebook.imagepipeline.common.ResizeOptions; +import com.facebook.imagepipeline.request.ImageRequest.RequestLevel; + +import java.util.List; + +import static android.support.v7.widget.RecyclerView.*; + +public class CustomAdapter extends RecyclerView.Adapter { + String TAG = "react"; + private List list; + + public CustomAdapter(List list) { + this.list = list; + } + + + @Override + public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.image_list_row, parent, false); + return new MyViewHolder(itemView); + } + + @Override + public void onViewDetachedFromWindow (MyViewHolder holder) { + if ( holder.gifView.getController() != null) { + Animatable animatable = holder.gifView.getController().getAnimatable(); + if (animatable != null) { + Log.d("Test", "animatable has allready been set"); +// animatable.start(); +// // later + animatable.stop(); + } else { + Log.d("Test", "animatable has not been set"); + } + } + } + + @Override + public void onBindViewHolder(MyViewHolder holder, int position) { + ListViewCell listViewCell = list.get(position); + + DraweeController controller = Fresco.newDraweeControllerBuilder() + .setUri(listViewCell.getUri()) + .setAutoPlayAnimations(true) + .build(); + holder.gifView.setController(controller); + + //holder.gifView.setImageURI(listViewCell.getUri()); + /* + ImageRequest imageRequest = + ImageRequestBuilder.newBuilderWithSource(listViewCell.getUri()) + //.setResizeOptions(new ResizeOptions(350, 200)) + .setLowestPermittedRequestLevel(RequestLevel.FULL_FETCH) + .build(); + DraweeController draweeController = Fresco.newDraweeControllerBuilder() + .setImageRequest(imageRequest) + .setOldController(holder.gifView.getController()) + .setAutoPlayAnimations(true) + .build(); + holder.gifView.setController(draweeController); + */ + } + + @Override + public int getItemCount() { + return list.size(); + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/performanceexample/ListViewCell.java b/android/app/src/main/java/com/performanceexample/ListViewCell.java new file mode 100644 index 0000000..565ad97 --- /dev/null +++ b/android/app/src/main/java/com/performanceexample/ListViewCell.java @@ -0,0 +1,17 @@ +package com.performanceexample; + +import android.net.Uri; + +public class ListViewCell { + private Uri uri; + + public ListViewCell(String uri) { + this.uri = Uri.parse(uri); + } + + + public Uri getUri() { + return uri; + } + +} \ No newline at end of file diff --git a/android/app/src/main/java/com/performanceexample/ListViewPackage.java b/android/app/src/main/java/com/performanceexample/ListViewPackage.java new file mode 100644 index 0000000..6232485 --- /dev/null +++ b/android/app/src/main/java/com/performanceexample/ListViewPackage.java @@ -0,0 +1,33 @@ +package com.performanceexample; + +import com.facebook.react.ReactPackage; +import com.facebook.react.bridge.JavaScriptModule; +import com.facebook.react.bridge.NativeModule; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.uimanager.ViewManager; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + + +public class ListViewPackage implements ReactPackage { + + @Override + public List createNativeModules(ReactApplicationContext reactContext) { + return Collections.emptyList(); + } + + @Override + public List> createJSModules() { + return Collections.emptyList(); + } + + @Override + public List createViewManagers(ReactApplicationContext reactContext) { + return Arrays.asList( + new ReactListViewManager() + ); + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/performanceexample/MainApplication.java b/android/app/src/main/java/com/performanceexample/MainApplication.java index 51799ea..5b27849 100644 --- a/android/app/src/main/java/com/performanceexample/MainApplication.java +++ b/android/app/src/main/java/com/performanceexample/MainApplication.java @@ -10,6 +10,8 @@ import com.facebook.react.shell.MainReactPackage; import com.facebook.soloader.SoLoader; +import com.performanceexample.ListViewPackage; + import java.util.Arrays; import java.util.List; @@ -24,7 +26,8 @@ public boolean getUseDeveloperSupport() { @Override protected List getPackages() { return Arrays.asList( - new MainReactPackage() + new MainReactPackage(), + new ListViewPackage() ); } }; diff --git a/android/app/src/main/java/com/performanceexample/MyViewHolder.java b/android/app/src/main/java/com/performanceexample/MyViewHolder.java new file mode 100644 index 0000000..d10d457 --- /dev/null +++ b/android/app/src/main/java/com/performanceexample/MyViewHolder.java @@ -0,0 +1,17 @@ +package com.performanceexample; + +import android.graphics.Color; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +import com.facebook.drawee.view.SimpleDraweeView; + +public class MyViewHolder extends RecyclerView.ViewHolder { + public SimpleDraweeView gifView; + + public MyViewHolder(View view) { + super(view); + gifView = (SimpleDraweeView) view.findViewById(R.id.my_image_view); + + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/performanceexample/ReactListViewManager.java b/android/app/src/main/java/com/performanceexample/ReactListViewManager.java new file mode 100644 index 0000000..3ea7798 --- /dev/null +++ b/android/app/src/main/java/com/performanceexample/ReactListViewManager.java @@ -0,0 +1,64 @@ +package com.performanceexample; + +import android.support.annotation.Nullable; +import android.support.v7.widget.DefaultItemAnimator; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; + +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.uimanager.SimpleViewManager; +import com.facebook.react.uimanager.ThemedReactContext; +import com.facebook.react.uimanager.ViewProps; +import com.facebook.react.uimanager.annotations.ReactProp; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import static com.facebook.react.common.ReactConstants.TAG; + +public class ReactListViewManager extends SimpleViewManager { + private List list = new ArrayList<>(); + private RecyclerView recyclerView; + private CustomAdapter mAdapter; + + @Override + public String getName() { + return "RCTListView"; + } + + @Override + protected RecyclerView createViewInstance(ThemedReactContext reactContext) { + mAdapter = new CustomAdapter(list); + return new RecyclerView(reactContext); + } + + @ReactProp(name = "src") + public void setSrc(RecyclerView view,@Nullable ReadableMap src) { + view.setHasFixedSize(true); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(view.getContext()); + view.setLayoutManager(mLayoutManager); + view.setItemAnimator(new DefaultItemAnimator()); + view.setAdapter(mAdapter); + prepareImageData(src); + } + + private void prepareImageData(ReadableMap map){ + + ReadableArray obj = map.getArray("images"); + for(int i = 0; i + + + \ No newline at end of file diff --git a/js/AndroidImageList.js b/js/AndroidImageList.js new file mode 100644 index 0000000..ade0043 --- /dev/null +++ b/js/AndroidImageList.js @@ -0,0 +1,13 @@ + +import { PropTypes } from 'react' +import { requireNativeComponent, View } from 'react-native' + +var iface = { + name: 'ImageView', + propTypes: { + src: PropTypes.object, + ...View.propTypes + }, +} + +module.exports = requireNativeComponent('RCTListView', iface) diff --git a/js/HomeScreen.js b/js/HomeScreen.js index b855baf..77c91b0 100644 --- a/js/HomeScreen.js +++ b/js/HomeScreen.js @@ -1,28 +1,26 @@ import React from 'react' -import { ListView } from 'react-native' import { FlickrImages } from './FlickrImages' -import ImageRow from './ImageRow' import { BgView } from './Background' -import style from './Style' + +import ListViewCustom from './AndroidImageList' class HomeScreen extends React.Component { constructor(props) { super(props) - const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1.uri !== r2.uri}) + this.state = { - dataSource: ds.cloneWithRows(FlickrImages) + dataSource:{"images": FlickrImages} } } render() { return ( - } - /> + + ) } From 1cd2b71f91618eb46c4decdcf8bba3de7774d165 Mon Sep 17 00:00:00 2001 From: Harry Gale Date: Sat, 25 Feb 2017 16:20:00 -0800 Subject: [PATCH 4/5] Clean up android code. --- .../com/performanceexample/CustomAdapter.java | 52 +------------------ .../performanceexample/ListViewPackage.java | 1 - .../performanceexample/MainApplication.java | 4 -- .../com/performanceexample/MyViewHolder.java | 5 +- .../ReactListViewManager.java | 9 ---- 5 files changed, 3 insertions(+), 68 deletions(-) diff --git a/android/app/src/main/java/com/performanceexample/CustomAdapter.java b/android/app/src/main/java/com/performanceexample/CustomAdapter.java index 807de4a..49a7ed9 100644 --- a/android/app/src/main/java/com/performanceexample/CustomAdapter.java +++ b/android/app/src/main/java/com/performanceexample/CustomAdapter.java @@ -1,26 +1,12 @@ package com.performanceexample; -import android.graphics.Color; -import android.graphics.drawable.Animatable; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.drawee.backends.pipeline.Fresco; -import com.facebook.drawee.view.SimpleDraweeView; -import com.facebook.drawee.interfaces.DraweeController; -import com.facebook.imagepipeline.request.ImageRequest; -import com.facebook.imagepipeline.request.ImageRequestBuilder; -import com.facebook.imagepipeline.common.ResizeOptions; -import com.facebook.imagepipeline.request.ImageRequest.RequestLevel; - import java.util.List; -import static android.support.v7.widget.RecyclerView.*; - public class CustomAdapter extends RecyclerView.Adapter { String TAG = "react"; private List list; @@ -29,7 +15,6 @@ public CustomAdapter(List list) { this.list = list; } - @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) @@ -37,45 +22,10 @@ public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new MyViewHolder(itemView); } - @Override - public void onViewDetachedFromWindow (MyViewHolder holder) { - if ( holder.gifView.getController() != null) { - Animatable animatable = holder.gifView.getController().getAnimatable(); - if (animatable != null) { - Log.d("Test", "animatable has allready been set"); -// animatable.start(); -// // later - animatable.stop(); - } else { - Log.d("Test", "animatable has not been set"); - } - } - } - @Override public void onBindViewHolder(MyViewHolder holder, int position) { ListViewCell listViewCell = list.get(position); - - DraweeController controller = Fresco.newDraweeControllerBuilder() - .setUri(listViewCell.getUri()) - .setAutoPlayAnimations(true) - .build(); - holder.gifView.setController(controller); - - //holder.gifView.setImageURI(listViewCell.getUri()); - /* - ImageRequest imageRequest = - ImageRequestBuilder.newBuilderWithSource(listViewCell.getUri()) - //.setResizeOptions(new ResizeOptions(350, 200)) - .setLowestPermittedRequestLevel(RequestLevel.FULL_FETCH) - .build(); - DraweeController draweeController = Fresco.newDraweeControllerBuilder() - .setImageRequest(imageRequest) - .setOldController(holder.gifView.getController()) - .setAutoPlayAnimations(true) - .build(); - holder.gifView.setController(draweeController); - */ + holder.imageView.setImageURI(listViewCell.getUri()); } @Override diff --git a/android/app/src/main/java/com/performanceexample/ListViewPackage.java b/android/app/src/main/java/com/performanceexample/ListViewPackage.java index 6232485..734a5ea 100644 --- a/android/app/src/main/java/com/performanceexample/ListViewPackage.java +++ b/android/app/src/main/java/com/performanceexample/ListViewPackage.java @@ -6,7 +6,6 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; diff --git a/android/app/src/main/java/com/performanceexample/MainApplication.java b/android/app/src/main/java/com/performanceexample/MainApplication.java index 5b27849..fb72efd 100644 --- a/android/app/src/main/java/com/performanceexample/MainApplication.java +++ b/android/app/src/main/java/com/performanceexample/MainApplication.java @@ -1,17 +1,13 @@ package com.performanceexample; import android.app.Application; -import android.util.Log; import com.facebook.react.ReactApplication; -import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; import com.facebook.soloader.SoLoader; -import com.performanceexample.ListViewPackage; - import java.util.Arrays; import java.util.List; diff --git a/android/app/src/main/java/com/performanceexample/MyViewHolder.java b/android/app/src/main/java/com/performanceexample/MyViewHolder.java index d10d457..0ca3fef 100644 --- a/android/app/src/main/java/com/performanceexample/MyViewHolder.java +++ b/android/app/src/main/java/com/performanceexample/MyViewHolder.java @@ -1,17 +1,16 @@ package com.performanceexample; -import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.view.View; import com.facebook.drawee.view.SimpleDraweeView; public class MyViewHolder extends RecyclerView.ViewHolder { - public SimpleDraweeView gifView; + public SimpleDraweeView imageView; public MyViewHolder(View view) { super(view); - gifView = (SimpleDraweeView) view.findViewById(R.id.my_image_view); + imageView = (SimpleDraweeView) view.findViewById(R.id.my_image_view); } } \ No newline at end of file diff --git a/android/app/src/main/java/com/performanceexample/ReactListViewManager.java b/android/app/src/main/java/com/performanceexample/ReactListViewManager.java index 3ea7798..c6ddac0 100644 --- a/android/app/src/main/java/com/performanceexample/ReactListViewManager.java +++ b/android/app/src/main/java/com/performanceexample/ReactListViewManager.java @@ -4,25 +4,16 @@ import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.uimanager.SimpleViewManager; import com.facebook.react.uimanager.ThemedReactContext; -import com.facebook.react.uimanager.ViewProps; import com.facebook.react.uimanager.annotations.ReactProp; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import java.util.Map; - -import static com.facebook.react.common.ReactConstants.TAG; public class ReactListViewManager extends SimpleViewManager { private List list = new ArrayList<>(); From 2d4fbb3cb83ade434e51553b0a45498287369bea Mon Sep 17 00:00:00 2001 From: Harry Gale Date: Sat, 25 Feb 2017 16:20:00 -0800 Subject: [PATCH 5/5] Clean up android code. --- .../com/performanceexample/CustomAdapter.java | 52 +------------------ .../performanceexample/ListViewPackage.java | 1 - .../performanceexample/MainApplication.java | 4 -- .../com/performanceexample/MyViewHolder.java | 5 +- .../ReactListViewManager.java | 9 ---- .../src/main/res/layout/image_list_row.xml | 2 +- 6 files changed, 4 insertions(+), 69 deletions(-) diff --git a/android/app/src/main/java/com/performanceexample/CustomAdapter.java b/android/app/src/main/java/com/performanceexample/CustomAdapter.java index 807de4a..49a7ed9 100644 --- a/android/app/src/main/java/com/performanceexample/CustomAdapter.java +++ b/android/app/src/main/java/com/performanceexample/CustomAdapter.java @@ -1,26 +1,12 @@ package com.performanceexample; -import android.graphics.Color; -import android.graphics.drawable.Animatable; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.drawee.backends.pipeline.Fresco; -import com.facebook.drawee.view.SimpleDraweeView; -import com.facebook.drawee.interfaces.DraweeController; -import com.facebook.imagepipeline.request.ImageRequest; -import com.facebook.imagepipeline.request.ImageRequestBuilder; -import com.facebook.imagepipeline.common.ResizeOptions; -import com.facebook.imagepipeline.request.ImageRequest.RequestLevel; - import java.util.List; -import static android.support.v7.widget.RecyclerView.*; - public class CustomAdapter extends RecyclerView.Adapter { String TAG = "react"; private List list; @@ -29,7 +15,6 @@ public CustomAdapter(List list) { this.list = list; } - @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) @@ -37,45 +22,10 @@ public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new MyViewHolder(itemView); } - @Override - public void onViewDetachedFromWindow (MyViewHolder holder) { - if ( holder.gifView.getController() != null) { - Animatable animatable = holder.gifView.getController().getAnimatable(); - if (animatable != null) { - Log.d("Test", "animatable has allready been set"); -// animatable.start(); -// // later - animatable.stop(); - } else { - Log.d("Test", "animatable has not been set"); - } - } - } - @Override public void onBindViewHolder(MyViewHolder holder, int position) { ListViewCell listViewCell = list.get(position); - - DraweeController controller = Fresco.newDraweeControllerBuilder() - .setUri(listViewCell.getUri()) - .setAutoPlayAnimations(true) - .build(); - holder.gifView.setController(controller); - - //holder.gifView.setImageURI(listViewCell.getUri()); - /* - ImageRequest imageRequest = - ImageRequestBuilder.newBuilderWithSource(listViewCell.getUri()) - //.setResizeOptions(new ResizeOptions(350, 200)) - .setLowestPermittedRequestLevel(RequestLevel.FULL_FETCH) - .build(); - DraweeController draweeController = Fresco.newDraweeControllerBuilder() - .setImageRequest(imageRequest) - .setOldController(holder.gifView.getController()) - .setAutoPlayAnimations(true) - .build(); - holder.gifView.setController(draweeController); - */ + holder.imageView.setImageURI(listViewCell.getUri()); } @Override diff --git a/android/app/src/main/java/com/performanceexample/ListViewPackage.java b/android/app/src/main/java/com/performanceexample/ListViewPackage.java index 6232485..734a5ea 100644 --- a/android/app/src/main/java/com/performanceexample/ListViewPackage.java +++ b/android/app/src/main/java/com/performanceexample/ListViewPackage.java @@ -6,7 +6,6 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; diff --git a/android/app/src/main/java/com/performanceexample/MainApplication.java b/android/app/src/main/java/com/performanceexample/MainApplication.java index 5b27849..fb72efd 100644 --- a/android/app/src/main/java/com/performanceexample/MainApplication.java +++ b/android/app/src/main/java/com/performanceexample/MainApplication.java @@ -1,17 +1,13 @@ package com.performanceexample; import android.app.Application; -import android.util.Log; import com.facebook.react.ReactApplication; -import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; import com.facebook.soloader.SoLoader; -import com.performanceexample.ListViewPackage; - import java.util.Arrays; import java.util.List; diff --git a/android/app/src/main/java/com/performanceexample/MyViewHolder.java b/android/app/src/main/java/com/performanceexample/MyViewHolder.java index d10d457..0ca3fef 100644 --- a/android/app/src/main/java/com/performanceexample/MyViewHolder.java +++ b/android/app/src/main/java/com/performanceexample/MyViewHolder.java @@ -1,17 +1,16 @@ package com.performanceexample; -import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.view.View; import com.facebook.drawee.view.SimpleDraweeView; public class MyViewHolder extends RecyclerView.ViewHolder { - public SimpleDraweeView gifView; + public SimpleDraweeView imageView; public MyViewHolder(View view) { super(view); - gifView = (SimpleDraweeView) view.findViewById(R.id.my_image_view); + imageView = (SimpleDraweeView) view.findViewById(R.id.my_image_view); } } \ No newline at end of file diff --git a/android/app/src/main/java/com/performanceexample/ReactListViewManager.java b/android/app/src/main/java/com/performanceexample/ReactListViewManager.java index 3ea7798..c6ddac0 100644 --- a/android/app/src/main/java/com/performanceexample/ReactListViewManager.java +++ b/android/app/src/main/java/com/performanceexample/ReactListViewManager.java @@ -4,25 +4,16 @@ import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.uimanager.SimpleViewManager; import com.facebook.react.uimanager.ThemedReactContext; -import com.facebook.react.uimanager.ViewProps; import com.facebook.react.uimanager.annotations.ReactProp; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import java.util.Map; - -import static com.facebook.react.common.ReactConstants.TAG; public class ReactListViewManager extends SimpleViewManager { private List list = new ArrayList<>(); diff --git a/android/app/src/main/res/layout/image_list_row.xml b/android/app/src/main/res/layout/image_list_row.xml index 90bdc8b..d9d98fa 100644 --- a/android/app/src/main/res/layout/image_list_row.xml +++ b/android/app/src/main/res/layout/image_list_row.xml @@ -3,7 +3,7 @@ xmlns:fresco="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="220dp">