【问题标题】:React Native UI Component反应原生 UI 组件
【发布时间】:2017-07-05 20:51:47
【问题描述】:

当 react native 多次需要这个原生 ui 组件时,从第二个开始,前一个变成黑色。

有什么想法吗?

@Override
public String getName()
{
    return "JWPlayer";
}


@Override
public JWPlayerView createViewInstance(ThemedReactContext context)
{
    PlayerConfig playerConfig = new PlayerConfig.Builder().build();

    playerView = new JWPlayerView(context.getCurrentActivity(), playerConfig);
    playerView.setFullscreen(false, false);
    playerView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

    playerView.addOnFullscreenListener(this);
    playerView.addOnPauseListener(this);
    playerView.addOnPlayListener(this);
    playerView.addOnSetupErrorListener(this);
    playerView.addOnErrorListener(this);



    return playerView;
}

【问题讨论】:

    标签: react-native react-native-component


    【解决方案1】:

    我也遇到过这个问题。 我解决了这个问题。

    same question

    this

    JWView.java :

    import android.app.Activity;
    import android.content.Context;
    import android.os.Handler;
    import android.os.Message;
    import android.util.DisplayMetrics;
    import android.util.Log;
    import android.view.SurfaceView;
    import android.view.View;
    import android.view.WindowManager;
    import android.widget.FrameLayout;
    
    
    import com.facebook.react.bridge.Arguments;
    import com.facebook.react.bridge.ReactContext;
    import com.facebook.react.bridge.UiThreadUtil;
    import com.facebook.react.bridge.WritableMap;
    
    import com.longtailvideo.jwplayer.JWPlayerView;
    import com.longtailvideo.jwplayer.configuration.PlayerConfig;
    
    public class JWView extends FrameLayout {
    
    
        private final Context _context;
        private Activity activity = null;
    
        public JWView(Context context) {
            super(context);
            this._context = context;
            this.activity = ((ReactContext) getContext()).getCurrentActivity();
    
            PlayerConfig playerConfig = new PlayerConfig.Builder()
                    .file("http://img.ksbbs.com/asset/Mon_1605/25d705200a4eab4.mp4")
                    .autostart(false)
                    .build();
    
            JWPlayerView playerView = new JWPlayerView(this.activity, playerConfig);
    
    
            addView(playerView);
        }
    
        private final Runnable measureAndLayout = new Runnable() {
            @Override
            public void run() {
                measure(
                        MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY),
                        MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.EXACTLY));
                layout(getLeft(), getTop(), getRight(), getBottom());
            }
        };
    
        @Override
        public void requestLayout() {
            super.requestLayout();
    
            // The spinner relies on a measure + layout pass happening after it calls requestLayout().
            // Without this, the widget never actually changes the selection and doesn't call the
            // appropriate listeners. Since we override onLayout in our ViewGroups, a layout pass never
            // happens after a call to requestLayout, so we simulate one here.
            post(measureAndLayout);
        }
    
    }
    

    JWPlayerViewManager.java:

    import java.util.List;
    import java.util.ArrayList;
    
    import android.app.Activity;
    import com.facebook.react.uimanager.SimpleViewManager;
    import com.facebook.react.uimanager.ThemedReactContext;
    
    
    import com.longtailvideo.jwplayer.JWPlayerView;
    import com.longtailvideo.jwplayer.configuration.PlayerConfig;
    
    
    public class JWPlayerViewManager extends SimpleViewManager<JWView>
    {
    
    
        @Override
        public String getName()
        {
            return "Jwplayer";
        }
    
        @Override
        public JWView createViewInstance(ThemedReactContext context)
        {
            return new JWView(context);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2019-06-05
      相关资源
      最近更新 更多