package com.demo.library_flutter.nativeview; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import com.bytedance.sdk.dp.DPSdk; import com.bytedance.sdk.dp.DPWidgetDrawParams; import com.bytedance.sdk.dp.IDPNewsListener; import com.bytedance.sdk.dp.IDPWidget; import com.demo.library_flutter.R; import com.idlefish.flutterboost.FlutterBoost; import com.qq.e.ads.nativ.NativeExpressAD; import com.qq.e.ads.nativ.NativeExpressADView; import java.util.Map; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.platform.PlatformView; class DrawVideoNativeView implements PlatformView { private static String TAG = "DrawVideoNativeView"; private Map params; private MethodChannel methodChannel; private Context mContext; private FragmentManager mFragmentManager; private View contentView; public DrawVideoNativeView(int viewId, Context context, Map params, BinaryMessenger binaryMessenger) { this.params = params; this.mContext = context; methodChannel = new MethodChannel(binaryMessenger, "ad-draw-video-view-" + viewId); methodChannel.setMethodCallHandler(new MethodChannel.MethodCallHandler() { @Override public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { if ("refresh".equalsIgnoreCase(call.method)) { //刷新 } } }); } @Override public View getView() { if (contentView == null) { contentView = LayoutInflater.from(mContext).inflate(R.layout.fragment_draw_video, null); if (mFragmentManager == null) { FragmentActivity fragmentActivity = (FragmentActivity) FlutterBoost.instance().currentActivity(); mFragmentManager = fragmentActivity.getSupportFragmentManager(); } initVideo(); } return contentView; } private void initVideo() { IDPWidget mIDPWidget = DPSdk.factory().createDraw(DPWidgetDrawParams.obtain().hideClose(true, null) .drawContentType(DPWidgetDrawParams.DRAW_CONTENT_TYPE_ALL) .enableRefresh(true) .customCategory("风景") .listener(new IDPNewsListener() { @Override public void onDPRefreshFinish() { log("onDPRefreshFinish"); } @Override public void onDPNewsItemClick(Map map) { log("onDPNewsItemClick"); } @Override public void onDPVideoPlay(Map map) { log("onDPVideoPlay"); } @Override public void onDPVideoPause(Map map) { log("onDPVideoPause"); } @Override public void onDPVideoContinue(Map map) { log("onDPVideoContinue"); } @Override public void onDPVideoOver(Map map) { log("onDPVideoOver"); // DPEventCollectUtil.playDrawVideo(getContext(), null, "dy", "home", false); } @Override public void onDPVideoCompletion(Map map) { log("onDPVideoCompletion"); super.onDPVideoCompletion(map); // DPEventCollectUtil.playDrawVideo(getContext(), null, "dy", "home", true); } @Override public void onDPNewsDetailEnter(Map map) { log("onDPNewsDetailEnter"); } @Override public void onDPNewsDetailExit(Map map) { log("onDPNewsDetailExit"); } })); Fragment fragment = mIDPWidget.getFragment(); if (fragment != null) { mFragmentManager.beginTransaction().replace(R.id.fl_container_draw_video, fragment).commitAllowingStateLoss(); } } private static void log(String msg) { Log.d(TAG, String.valueOf(msg)); } @Override public void dispose() { } }