Commit eb6eb17e authored by BelinChung's avatar BelinChung Committed by Sunhat

Working for RN0.29.0

parent 579f7390
...@@ -4,7 +4,7 @@ I have no time to maintain this project, but if anyone is interested in taking o ...@@ -4,7 +4,7 @@ I have no time to maintain this project, but if anyone is interested in taking o
## ExtraDimensions ## ExtraDimensions
This module allows you to access additional display metrics on Android devices. This module allows you to access additional display metrics on Android devices. (RN 0.29.0+)
- Actual width and height of the screen (including elements such as soft menu bar) - Actual width and height of the screen (including elements such as soft menu bar)
- Soft menu height - Soft menu height
...@@ -39,17 +39,17 @@ view needs to fill up the real screen size. ...@@ -39,17 +39,17 @@ view needs to fill up the real screen size.
} }
``` ```
3. Register module (in MainActivity.java) 3. Register module (in MainApplication.java)
``` ```
import ca.jaysoo.extradimensions.ExtraDimensionsPackage; // <--- import import ca.jaysoo.extradimensions.ExtraDimensionsPackage; // <--- import
public class MainActivity extends ReactActivity { public class MainApplication extends Application implements ReactApplication {
...... ......
protected List<ReactPackage> getPackages() { protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList( return Arrays.<ReactPackage>asList(
new MainReactPackage(), new MainReactPackage(),
new ExtraDimensionsPackage(this) // <--- add here new ExtraDimensionsPackage() // <--- add here
); );
} }
...... ......
......
...@@ -3,15 +3,17 @@ package ca.jaysoo.extradimensions; ...@@ -3,15 +3,17 @@ package ca.jaysoo.extradimensions;
import java.lang.Math; import java.lang.Math;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.Display; import android.view.Display;
import android.provider.Settings; import android.provider.Settings;
import android.content.res.Resources; import android.content.res.Resources;
import android.view.WindowManager;
import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.LifecycleEventListener;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactContextBaseJavaModule;
import java.util.HashMap; import java.util.HashMap;
...@@ -19,12 +21,14 @@ import java.util.Map; ...@@ -19,12 +21,14 @@ import java.util.Map;
import java.lang.reflect.Field; import java.lang.reflect.Field;
public class ExtraDimensionsModule extends ReactContextBaseJavaModule { public class ExtraDimensionsModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
private Activity mCurrentActivity;
public ExtraDimensionsModule(ReactApplicationContext reactContext, Activity activity) { private ReactContext mReactContext;
public ExtraDimensionsModule(ReactApplicationContext reactContext) {
super(reactContext); super(reactContext);
mCurrentActivity = activity; mReactContext = reactContext;
mReactContext.addLifecycleEventListener(this);
} }
@Override @Override
...@@ -32,6 +36,21 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule { ...@@ -32,6 +36,21 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
return "ExtraDimensions"; return "ExtraDimensions";
} }
@Override
public void onHostDestroy() {
}
@Override
public void onHostPause() {
}
@Override
public void onHostResume() {
}
@Override @Override
public Map<String, Object> getConstants() { public Map<String, Object> getConstants() {
final Map<String, Object> constants = new HashMap<>(); final Map<String, Object> constants = new HashMap<>();
...@@ -44,7 +63,8 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule { ...@@ -44,7 +63,8 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
// //
// See: http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics) // See: http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics)
if (Build.VERSION.SDK_INT >= 17) { if (Build.VERSION.SDK_INT >= 17) {
Display display = mCurrentActivity.getWindowManager().getDefaultDisplay(); Display display = ((WindowManager) mReactContext.getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay();
try { try {
Display.class.getMethod("getRealMetrics", DisplayMetrics.class).invoke(display, metrics); Display.class.getMethod("getRealMetrics", DisplayMetrics.class).invoke(display, metrics);
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {
...@@ -76,7 +96,8 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule { ...@@ -76,7 +96,8 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
final Context ctx = getReactApplicationContext(); final Context ctx = getReactApplicationContext();
final DisplayMetrics usableMetrics = ctx.getResources().getDisplayMetrics(); final DisplayMetrics usableMetrics = ctx.getResources().getDisplayMetrics();
mCurrentActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); ((WindowManager) mReactContext.getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay().getMetrics(metrics);
final int usableHeight = usableMetrics.heightPixels; final int usableHeight = usableMetrics.heightPixels;
return Math.max(0, realHeight - usableHeight / metrics.density); return Math.max(0, realHeight - usableHeight / metrics.density);
...@@ -136,5 +157,4 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule { ...@@ -136,5 +157,4 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
} }
return 0; return 0;
} }
} }
\ No newline at end of file
package ca.jaysoo.extradimensions; package ca.jaysoo.extradimensions;
import android.app.Activity;
import com.facebook.react.ReactPackage; import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.NativeModule;
...@@ -13,16 +11,11 @@ import java.util.Collections; ...@@ -13,16 +11,11 @@ import java.util.Collections;
import java.util.List; import java.util.List;
public class ExtraDimensionsPackage implements ReactPackage { public class ExtraDimensionsPackage implements ReactPackage {
private Activity mCurrentActivity;
public ExtraDimensionsPackage(Activity activity) {
mCurrentActivity = activity;
}
@Override @Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList( return Arrays.<NativeModule>asList(
new ExtraDimensionsModule(reactContext, mCurrentActivity) new ExtraDimensionsModule(reactContext)
); );
} }
...@@ -35,6 +28,4 @@ public class ExtraDimensionsPackage implements ReactPackage { ...@@ -35,6 +28,4 @@ public class ExtraDimensionsPackage implements ReactPackage {
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Arrays.asList(); return Arrays.asList();
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment