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:
parent
103bb8bfb0
commit
f31d5089c4
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user