反应原生 UI 组件 [英] React Native UI Component

查看:47
本文介绍了反应原生 UI 组件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当 react native 多次需要这个原生 ui 组件时,从第二个开始,前面的就变成黑色了.

When react native require this native ui component multiple time, starting from the second one, the previous became black.

有什么想法吗?

@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;
}

推荐答案

我也遇到了这个问题.我解决了这个问题.

I also met this question. I solved the problem.

同样的问题

see same question ,

这个

JWView.java :

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:

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);
    }
}

这篇关于反应原生 UI 组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆