Release React Native for Android

This is an early release and there are several things that are known
not to work if you're porting your iOS app to Android.

See the Known Issues guide on the website.

We will work with the community to reach platform parity with iOS.
This commit is contained in:
Martin Konicek
2015-09-14 15:35:58 +01:00
parent c372dab213
commit 42eb5464fd
571 changed files with 44550 additions and 116 deletions

View File

@@ -0,0 +1,89 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.react.uimanager;
import javax.annotation.Nullable;
import android.view.View;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
/**
* Wrapper for {@link ReadableMap} which should be used for styles property map. It extends
* some of the accessor methods of {@link ReadableMap} by adding a default value property
* such that caller is enforced to provide a default value for a style property.
*
* Instances of this class are used to update {@link View} or {@link CSSNode} style properties.
* Since properties are generated by React framework based on what has been updated each value
* in this map should either be interpreted as a new value set for a style property or as a "reset
* this property to default" command in case when value is null (this is a way React communicates
* change in which the style key that was previously present in a map has been removed).
*
* NOTE: Accessor method with default value will throw an exception when the key is not present in
* the map. Style applicator logic should verify whether the key exists in the map using
* {@link #hasKey} before fetching the value. The motivation behind this is that in case when the
* updated style diff map doesn't contain a certain style key it means that the corresponding view
* property shouldn't be updated (whereas in all other cases it should be updated to the new value
* or the property should be reset).
*/
public class CatalystStylesDiffMap {
/* package */ final ReadableMap mBackingMap;
public CatalystStylesDiffMap(ReadableMap props) {
mBackingMap = props;
}
public boolean hasKey(String name) {
return mBackingMap.hasKey(name);
}
public boolean isNull(String name) {
return mBackingMap.isNull(name);
}
public boolean getBoolean(String name, boolean restoreNullToDefaultValue) {
return mBackingMap.isNull(name) ? restoreNullToDefaultValue : mBackingMap.getBoolean(name);
}
public double getDouble(String name, double restoreNullToDefaultValue) {
return mBackingMap.isNull(name) ? restoreNullToDefaultValue : mBackingMap.getDouble(name);
}
public float getFloat(String name, float restoreNullToDefaultValue) {
return mBackingMap.isNull(name) ?
restoreNullToDefaultValue : (float) mBackingMap.getDouble(name);
}
public int getInt(String name, int restoreNullToDefaultValue) {
return mBackingMap.isNull(name) ? restoreNullToDefaultValue : (int) mBackingMap.getDouble(name);
}
@Nullable
public String getString(String name) {
return mBackingMap.getString(name);
}
@Nullable
public ReadableArray getArray(String key) {
return mBackingMap.getArray(key);
}
@Nullable
public ReadableMap getMap(String key) {
return mBackingMap.getMap(key);
}
@Override
public String toString() {
return "{ " + getClass().getSimpleName() + ": " + mBackingMap.toString() + " }";
}
}