mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Migrate AndroidProgressBarComponent to Fabric
Summary: This diff migrates AndroidProgressBar component to Fabric changeLog: [internal] internal Reviewed By: sammy-SC Differential Revision: D23227857 fbshipit-source-id: c5cbbdcc36e63226286cd714d601f0d4690496b2
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6aa63272dc
commit
62de5c001c
-1
@@ -20,7 +20,6 @@ using ActivityIndicatorViewComponentDescriptor = ConcreteComponentDescriptor<Act
|
||||
using DatePickerComponentDescriptor = ConcreteComponentDescriptor<DatePickerShadowNode>;
|
||||
using AndroidDrawerLayoutComponentDescriptor = ConcreteComponentDescriptor<AndroidDrawerLayoutShadowNode>;
|
||||
using RCTMaskedViewComponentDescriptor = ConcreteComponentDescriptor<RCTMaskedViewShadowNode>;
|
||||
using AndroidProgressBarComponentDescriptor = ConcreteComponentDescriptor<AndroidProgressBarShadowNode>;
|
||||
using RCTProgressViewComponentDescriptor = ConcreteComponentDescriptor<RCTProgressViewShadowNode>;
|
||||
using AndroidSwipeRefreshLayoutComponentDescriptor = ConcreteComponentDescriptor<AndroidSwipeRefreshLayoutShadowNode>;
|
||||
using PullToRefreshViewComponentDescriptor = ConcreteComponentDescriptor<PullToRefreshViewShadowNode>;
|
||||
|
||||
-1
@@ -17,7 +17,6 @@ extern const char ActivityIndicatorViewComponentName[] = "ActivityIndicatorView"
|
||||
extern const char DatePickerComponentName[] = "DatePicker";
|
||||
extern const char AndroidDrawerLayoutComponentName[] = "AndroidDrawerLayout";
|
||||
extern const char RCTMaskedViewComponentName[] = "RCTMaskedView";
|
||||
extern const char AndroidProgressBarComponentName[] = "AndroidProgressBar";
|
||||
extern const char RCTProgressViewComponentName[] = "RCTProgressView";
|
||||
extern const char AndroidSwipeRefreshLayoutComponentName[] = "AndroidSwipeRefreshLayout";
|
||||
extern const char PullToRefreshViewComponentName[] = "PullToRefreshView";
|
||||
|
||||
-9
@@ -55,15 +55,6 @@ using RCTMaskedViewShadowNode = ConcreteViewShadowNode<
|
||||
RCTMaskedViewComponentName,
|
||||
RCTMaskedViewProps>;
|
||||
|
||||
extern const char AndroidProgressBarComponentName[];
|
||||
|
||||
/*
|
||||
* `ShadowNode` for <AndroidProgressBar> component.
|
||||
*/
|
||||
using AndroidProgressBarShadowNode = ConcreteViewShadowNode<
|
||||
AndroidProgressBarComponentName,
|
||||
AndroidProgressBarProps>;
|
||||
|
||||
extern const char RCTProgressViewComponentName[];
|
||||
|
||||
/*
|
||||
|
||||
+40
@@ -8,17 +8,25 @@
|
||||
package com.facebook.react.views.progressbar;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Pair;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ProgressBar;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.uimanager.BaseViewManager;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
import com.facebook.react.uimanager.ThemedReactContext;
|
||||
import com.facebook.react.uimanager.ViewManagerDelegate;
|
||||
import com.facebook.react.uimanager.ViewProps;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
import com.facebook.react.viewmanagers.AndroidProgressBarManagerDelegate;
|
||||
import com.facebook.react.viewmanagers.AndroidProgressBarManagerInterface;
|
||||
import com.facebook.yoga.YogaMeasureMode;
|
||||
import com.facebook.yoga.YogaMeasureOutput;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
/**
|
||||
* Manages instances of ProgressBar. ProgressBar is wrapped in a ProgressBarContainerView because
|
||||
@@ -33,6 +41,8 @@ public class ReactProgressBarViewManager
|
||||
|
||||
public static final String REACT_CLASS = "AndroidProgressBar";
|
||||
|
||||
private final WeakHashMap<Integer, Pair<Integer, Integer>> mMeasuredStyles = new WeakHashMap<>();
|
||||
|
||||
/* package */ static final String PROP_STYLE = "styleAttr";
|
||||
/* package */ static final String PROP_INDETERMINATE = "indeterminate";
|
||||
/* package */ static final String PROP_PROGRESS = "progress";
|
||||
@@ -154,4 +164,34 @@ public class ReactProgressBarViewManager
|
||||
throw new JSApplicationIllegalArgumentException("Unknown ProgressBar style: " + styleStr);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public long measure(
|
||||
Context context,
|
||||
ReadableMap localData,
|
||||
ReadableMap props,
|
||||
ReadableMap state,
|
||||
float width,
|
||||
YogaMeasureMode widthMode,
|
||||
float height,
|
||||
YogaMeasureMode heightMode,
|
||||
@Nullable float[] attachmentsPositions) {
|
||||
|
||||
final Integer style =
|
||||
ReactProgressBarViewManager.getStyleFromString(props.getString(PROP_STYLE));
|
||||
Pair<Integer, Integer> value = mMeasuredStyles.get(style);
|
||||
if (value == null) {
|
||||
ProgressBar progressBar = ReactProgressBarViewManager.createProgressBar(context, style);
|
||||
|
||||
final int spec =
|
||||
View.MeasureSpec.makeMeasureSpec(
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED);
|
||||
progressBar.measure(spec, spec);
|
||||
value = Pair.create(progressBar.getMeasuredWidth(), progressBar.getMeasuredHeight());
|
||||
mMeasuredStyles.put(style, value);
|
||||
}
|
||||
|
||||
return YogaMeasureOutput.make(
|
||||
PixelUtil.toDIPFromPixel(value.first), PixelUtil.toDIPFromPixel(value.second));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user