我可以在android上用javafx显示google adwords(AdView)吗
我有一个在android上运行的javafx应用程序,我想在一些屏幕上放置google adwords。我的问题是adwords使用googles AdView来显示add,它是一个Android表示对象,与JavaFX表示层不兼容 创建AdView的示例代码我可以在android上用javafx显示google adwords(AdView)吗,java,android,javafxports,gluon-mobile,Java,Android,Javafxports,Gluon Mobile,我有一个在android上运行的javafx应用程序,我想在一些屏幕上放置google adwords。我的问题是adwords使用googles AdView来显示add,它是一个Android表示对象,与JavaFX表示层不兼容 创建AdView的示例代码 import com.google.android.gms.ads.MobileAds; import javafxports.android.FXActivity; import com.google.android.gms.ads
import com.google.android.gms.ads.MobileAds;
import javafxports.android.FXActivity;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
/**
* Constructor creates AdView
* Call getAdView() to retrieve AdView object.
*/
public class GoogleAds {
private AdView adView = null;
public GoogleAds() {
AdView mAdView = createAddView();
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) // All emulators
.build();
mAdView.loadAd(adRequest);
}
...
现在我有了一个com.google.android.gms.ads.AdView对象,可以演示了
我可以使用
private void includeGoogleAdView(LinearLayout layout) {
AdView adView = GoogleAds().getAdView();
layout.addView(mAdView);
}
当作为android应用程序运行时,所有这些都能正常工作
所以问题是“我能在javafx表示层中显示一个AdView吗?”
有没有办法让com.google.android.gms.ads.AdView成为javafx.scene.Node的一个实例,然后我可以使用类似
private Node addToPane(AdView adView) {
javafx.scene.layout.Pane pane = new javafx.scene.layout.Pane();
pane.getChildren().addAll( canvas, adView);
return pane;
}
或者有其他解决方案吗?通过从
FXActivity
访问视图组,您可以轻松地在应用程序中包含AdView
这是一段适合我的代码片段。请注意,它必须在UIThread中运行:
public AndroidAds() {
FXActivity.getInstance().runOnUiThread(() -> {
LinearLayout layout = new LinearLayout(FXActivity.getInstance());
layout.setVerticalGravity(Gravity.BOTTOM);
layout.setOrientation(LinearLayout.VERTICAL);
AdView adView = new AdView(FXActivity.getInstance());
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId("ca-app-pub-XXXXXXXXXXXXXXXXXXXX");
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("XXXXXXXXXXXXXXXXXXXX")
.build();
adView.loadAd(adRequest);
adView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
System.out.println("AD loaded");
}
});
layout.addView(adView);
FXActivity.getViewGroup().addView(layout);
});
}
和往常一样回答得很好。谢谢@José很高兴能帮上忙。让我知道它是否适合你。在这种情况下,考虑接受答案,所以其他人也会发现它有用。