4
0
mirror of https://github.com/QuasarApp/QtAndroidTools.git synced 2025-04-30 23:04:32 +00:00

Calculate the right size of admob smart banner

This commit is contained in:
FalsinSoft 2019-01-28 22:50:58 +01:00
parent 103bb8bfb0
commit f31d5089c4
4 changed files with 81 additions and 29 deletions
QtAndroidTools
QtAndroidToolsDemo/tools

@ -50,6 +50,8 @@ QAndroidAdMobBanner::QAndroidAdMobBanner(QQuickItem *parent) : QQuickItem(parent
JniEnv->DeleteLocalRef(ObjectClass);
}
connect(qGuiApp, &QGuiApplication::applicationStateChanged, this, &QAndroidAdMobBanner::ApplicationStateChanged);
connect(this, &QQuickItem::xChanged, this, &QAndroidAdMobBanner::ItemPosChanged);
connect(this, &QQuickItem::yChanged, this, &QAndroidAdMobBanner::ItemPosChanged);
SetNewAppState(APP_STATE_CREATE);
}
@ -68,7 +70,7 @@ bool QAndroidAdMobBanner::show()
{
if(m_JavaAdMobBanner.isValid() && m_BannerType != TYPE_NO_BANNER && m_UnitId.isEmpty() == false)
{
UpdateBannerPos();
ItemPosChanged();
m_JavaAdMobBanner.callMethod<void>("show");
return true;
}
@ -76,12 +78,15 @@ bool QAndroidAdMobBanner::show()
return false;
}
void QAndroidAdMobBanner::hide()
bool QAndroidAdMobBanner::hide()
{
if(m_JavaAdMobBanner.isValid())
{
m_JavaAdMobBanner.callMethod<void>("hide");
return true;
}
return false;
}
const QString& QAndroidAdMobBanner::getUnitId() const
@ -110,7 +115,8 @@ void QAndroidAdMobBanner::setType(BANNER_TYPE Type)
{
if(m_JavaAdMobBanner.isValid() && Type != TYPE_NO_BANNER)
{
QAndroidJniObject BannerSizeObj;
const qreal PixelRatio = qApp->primaryScreen()->devicePixelRatio();
QAndroidJniObject BannerPixelsSizeObj;
m_JavaAdMobBanner.callMethod<void>("setType",
"(I)V",
@ -118,15 +124,15 @@ void QAndroidAdMobBanner::setType(BANNER_TYPE Type)
);
m_BannerType = Type;
BannerSizeObj = m_JavaAdMobBanner.callObjectMethod("getSize",
"()Lcom/falsinsoft/qtandroidtools/AdMobBanner$BannerSize;"
);
setWidth(BannerSizeObj.getField<jint>("width"));
setHeight(BannerSizeObj.getField<jint>("height"));
BannerPixelsSizeObj = m_JavaAdMobBanner.callObjectMethod("getPixelsSize",
"()Lcom/falsinsoft/qtandroidtools/AdMobBanner$BannerSize;"
);
setWidth(BannerPixelsSizeObj.getField<jint>("width") / PixelRatio);
setHeight(BannerPixelsSizeObj.getField<jint>("height") / PixelRatio);
}
}
void QAndroidAdMobBanner::UpdateBannerPos()
void QAndroidAdMobBanner::ItemPosChanged()
{
if(m_JavaAdMobBanner.isValid())
{

@ -58,7 +58,7 @@ public:
};
Q_INVOKABLE bool show();
Q_INVOKABLE void hide();
Q_INVOKABLE bool hide();
const QString& getUnitId() const;
void setUnitId(const QString &UnitId);
@ -76,6 +76,7 @@ signals:
private slots:
void ApplicationStateChanged(Qt::ApplicationState State);
void ItemPosChanged();
private:
const QAndroidJniObject m_JavaAdMobBanner;
@ -104,5 +105,4 @@ private:
APP_STATE_DESTROY
};
void SetNewAppState(APP_STATE NewState);
void UpdateBannerPos();
};

@ -47,7 +47,7 @@ public class AdMobBanner
private AdView mBannerView = null;
private boolean mBannerLoaded = false;
private BannerSize mBannerSize = new BannerSize();
private BannerSize mBannerPixelsSize = new BannerSize();
public AdMobBanner(Activity ActivityInstance)
{
@ -56,9 +56,9 @@ public class AdMobBanner
mActivityInstance = ActivityInstance;
}
public BannerSize getSize()
public BannerSize getPixelsSize()
{
return mBannerSize;
return mBannerPixelsSize;
}
public void setType(final int type)
@ -97,8 +97,8 @@ public class AdMobBanner
}
mBannerView.setAdSize(BannerSize);
mBannerSize.width = BannerSize.getWidth();
mBannerSize.height = BannerSize.getHeight();
mBannerPixelsSize.width = BannerSize.getWidthInPixels(mActivityInstance);
mBannerPixelsSize.height = BannerSize.getHeightInPixels(mActivityInstance);
}
});
UiThread.exec();

@ -6,32 +6,70 @@ import QtAndroidTools 1.0
Page {
id: page
padding: 20
padding: 0
Column {
anchors.fill: parent
spacing: 30
width: parent.wdith
height: parent.height * 0.8
anchors.centerIn: parent
spacing: 20
Label {
anchors.horizontalCenter: parent.horizontalCenter
font.bold: true
font.pixelSize: 15
text: "Banner 1"
text: "Banner"
}
QtAndroidAdMobBanner {
id: banner1
unitId: "ca-app-pub-3940256099942544/6300978111"
type: QtAndroidAdMobBanner.TYPE_BANNER
Rectangle {
anchors.horizontalCenter: parent.horizontalCenter
border.width: 1
border.color: "black"
width: banner1.width
height: banner1.height
QtAndroidAdMobBanner {
id: banner1
unitId: "ca-app-pub-3940256099942544/6300978111"
type: QtAndroidAdMobBanner.TYPE_BANNER
onLoading: banner1state.text = "Loading"
onLoaded: banner1state.text = "Loaded"
onLoadError: banner1state.text = "Error " + errorId
}
}
Label {
id: banner1state
anchors.horizontalCenter: parent.horizontalCenter
font.pixelSize: 13
text: "Banner not loaded"
}
Label {
anchors.horizontalCenter: parent.horizontalCenter
font.bold: true
font.pixelSize: 15
text: "Banner 2"
text: "Smart Banner"
}
QtAndroidAdMobBanner {
id: banner2
unitId: "ca-app-pub-3940256099942544/6300978111"
type: QtAndroidAdMobBanner.TYPE_BANNER
Rectangle {
anchors.horizontalCenter: parent.horizontalCenter
border.width: 1
border.color: "black"
width: banner2.width
height: banner2.height
QtAndroidAdMobBanner {
id: banner2
unitId: "ca-app-pub-3940256099942544/6300978111"
type: QtAndroidAdMobBanner.TYPE_SMART_BANNER
onLoading: banner2state.text = "Loading"
onLoaded: banner2state.text = "Loaded"
onLoadError: banner2state.text = "Error " + errorId
}
}
Label {
id: banner2state
anchors.horizontalCenter: parent.horizontalCenter
font.pixelSize: 13
text: "Banner not loaded"
}
Button {
@ -42,5 +80,13 @@ Page {
banner2.show();
}
}
Button {
anchors.horizontalCenter: parent.horizontalCenter
text: "Hide banners"
onClicked: {
banner1.hide();
banner2.hide();
}
}
}
}