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
## 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)
- Soft menu height
......@@ -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
public class MainActivity extends ReactActivity {
public class MainApplication extends Application implements ReactApplication {
......
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new ExtraDimensionsPackage(this) // <--- add here
new ExtraDimensionsPackage() // <--- add here
);
}
......
......
......@@ -3,15 +3,17 @@ package ca.jaysoo.extradimensions;
import java.lang.Math;
import java.lang.reflect.InvocationTargetException;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.util.DisplayMetrics;
import android.view.Display;
import android.provider.Settings;
import android.content.res.Resources;
import android.view.WindowManager;
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 java.util.HashMap;
......@@ -19,12 +21,14 @@ import java.util.Map;
import java.lang.reflect.Field;
public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
private Activity mCurrentActivity;
public class ExtraDimensionsModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
public ExtraDimensionsModule(ReactApplicationContext reactContext, Activity activity) {
private ReactContext mReactContext;
public ExtraDimensionsModule(ReactApplicationContext reactContext) {
super(reactContext);
mCurrentActivity = activity;
mReactContext = reactContext;
mReactContext.addLifecycleEventListener(this);
}
@Override
......@@ -32,6 +36,21 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
return "ExtraDimensions";
}
@Override
public void onHostDestroy() {
}
@Override
public void onHostPause() {
}
@Override
public void onHostResume() {
}
@Override
public Map<String, Object> getConstants() {
final Map<String, Object> constants = new HashMap<>();
......@@ -44,7 +63,8 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
//
// See: http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics)
if (Build.VERSION.SDK_INT >= 17) {
Display display = mCurrentActivity.getWindowManager().getDefaultDisplay();
Display display = ((WindowManager) mReactContext.getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay();
try {
Display.class.getMethod("getRealMetrics", DisplayMetrics.class).invoke(display, metrics);
} catch (InvocationTargetException e) {
......@@ -76,7 +96,8 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
final Context ctx = getReactApplicationContext();
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;
return Math.max(0, realHeight - usableHeight / metrics.density);
......@@ -136,5 +157,4 @@ public class ExtraDimensionsModule extends ReactContextBaseJavaModule {
}
return 0;
}
}
}
\ No newline at end of file
package ca.jaysoo.extradimensions;
import android.app.Activity;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
......@@ -13,16 +11,11 @@ import java.util.Collections;
import java.util.List;
public class ExtraDimensionsPackage implements ReactPackage {
private Activity mCurrentActivity;
public ExtraDimensionsPackage(Activity activity) {
mCurrentActivity = activity;
}
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(
new ExtraDimensionsModule(reactContext, mCurrentActivity)
new ExtraDimensionsModule(reactContext)
);
}
......@@ -35,6 +28,4 @@ public class ExtraDimensionsPackage implements ReactPackage {
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
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