package com.laoqiu.amap; import android.content.Context; import android.graphics.Color; import android.os.Build; import android.util.DisplayMetrics; import android.view.WindowManager; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.common.MapBuilder; import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.uimanager.ViewGroupManager; import com.facebook.react.uimanager.annotations.ReactProp; import java.util.Map; import javax.annotation.Nullable; public class AMapPolylineManager extends ViewGroupManager<AMapPolyline> { private final DisplayMetrics metrics; public AMapPolylineManager(ReactApplicationContext reactContext) { super(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay() .getRealMetrics(metrics); } else { metrics = reactContext.getResources().getDisplayMetrics(); } } @Override public String getName() { return "AMapPolyline"; } @Override public AMapPolyline createViewInstance(ThemedReactContext context) { return new AMapPolyline(context); } @ReactProp(name = "coordinates") public void setCoordinate(AMapPolyline view, ReadableArray coordinates) { view.setCoordinates(coordinates); } @ReactProp(name = "strokeWidth", defaultFloat = 1f) public void setStrokeWidth(AMapPolyline view, float widthInPoints) { float widthInScreenPx = metrics.density * widthInPoints; // done for parity with iOS view.setWidth(widthInScreenPx); } @ReactProp(name = "strokeColor", defaultInt = Color.RED, customType = "Color") public void setStrokeColor(AMapPolyline view, int color) { view.setColor(color); } @ReactProp(name = "geodesic", defaultBoolean = false) public void setGeodesic(AMapPolyline view, boolean geodesic) { view.setGeodesic(geodesic); } @ReactProp(name = "zIndex", defaultFloat = 1.0f) public void setZIndex(AMapPolyline view, float zIndex) { view.setZIndex(zIndex); } @Override @Nullable public Map getExportedCustomDirectEventTypeConstants() { return MapBuilder.of( "onPress", MapBuilder.of("registrationName", "onPress") ); } }