using space when ad is not loaded android(未加载广告时使用空间android)
问题描述
我正在尝试在我的应用程序中添加 admob 广告,但是当我没有连接到互联网时,空间太小了......
I am trying to add admob ads in my application but when I am not connected to internet than too empty space is there...
我希望添加在加载后出现,直到广告空间应该被其余元素使用
I want add to appear after loading until then ad space should be utilized by the rest elements
怎么办???
我的活动文件如下 -
My Activity file is given below -
MainActivity.java`
package com.testapp.update1;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
private AdView adView;
GridView grid;
String[] icons = { "Historic Places", "Railway", "City Bus", "Movie",
"Directory" };
int[] imageID = { R.drawable.ic_historic, R.drawable.ic_train,
R.drawable.ic_bus, R.drawable.ic_movie, R.drawable.ic_call };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//adding advertisement
adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId(CommanData.AD_UNIT_ID);
// Add the AdView to the view hierarchy. The view will have no size
// until the ad is loaded.
LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout1);
layout.addView(adView);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("4963BE445DBBB277")
.build();
// Start loading the ad in the background.
CustomGrid adapter = new CustomGrid(MainActivity.this, icons, imageID);
grid = (GridView) findViewById(R.id.icongrid);
grid.setAdapter(adapter);
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,
"You clicked at " + icons[position] + position,
Toast.LENGTH_SHORT).show();
Intent web = new Intent();
switch (position) {
case 0:
web.setClass(MainActivity.this, Places.class);
startActivity(web);
break;
case 1:
web.setClass(MainActivity.this, Railway.class);
startActivity(web);
break;
case 2:
web.setClass(MainActivity.this, BusOptions.class);
startActivity(web);
break;
case 3:
ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
if(cd.isConnected()) {
web.setClass(MainActivity.this, Movies.class);
startActivity(web);
} else {
showConnectivityDialog();
}
break;
case 4:
Intent intent = new Intent(MainActivity.this,
CallDirctory.class);
startActivity(intent);
default:
break;
}
}
});
// to load add
adView.loadAd(adRequest);
// To rate application at google play
// AppRater.showRateDialog(mContext, editor)
AppRater.app_launched(MainActivity.this);
}
@Override
public void onResume() {
super.onResume();
if (adView != null) {
adView.resume();
}
}
@Override
public void onPause() {
if (adView != null) {
adView.pause();
}
super.onPause();
}
/** Called before the activity is destroyed. */
@Override
public void onDestroy() {
// Destroy the AdView.
if (adView != null) {
adView.destroy();
}
super.onDestroy();
}
public void showConnectivityDialog() {
AlertDialog.Builder notfoundDialog = new AlertDialog.Builder(MainActivity.this);
notfoundDialog.setTitle("Not Connected")
.setMessage("It seems you are not connected to internet")
.setPositiveButton("Ok", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setIcon(R.drawable.ic_launcher)
.show();
}
}
推荐答案
保持可见性
LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout1);
即您最初将 Adview 添加到 View.GONE 的布局,因此它不会占用任何空间.
i.e. the layout to which you are adding your Adviewto View.GONE initially so it will occup no space.
现在添加一个 AdListener 到 AdView 并在 onAdLoaded 中制作上述布局 View.VISIBLEAdListener 的方法.这样,在加载 Ad 之前,布局将永远不可见.
Now add an AdListener to the AdView and make the above mentioned layout View.VISIBLE in the onAdLoadedmethod of the AdListener. That way the layout will never be visible until the Ad is loaded.
例如.
AdListener googleAdListener = new AdListener()
{
@Override
public void onAdLoaded()
{
super.onAdLoaded();
try
{
(LinearLayout) findViewById(R.id.LinearLayout1).setVisibility(View.VISIBLE);
}
catch (Exception e)
{
Logger.LogException(e);
}
}
};
adView.setAdListener(googleAdListener);
注意:您必须使用最新的 google-play-services-lib 而不是 AdMobsSDK
NOTE: You will have to use the latest google-play-services-lib not AdMobsSDK
这篇关于未加载广告时使用空间android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:未加载广告时使用空间android
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 转换 ldap 日期 2022-01-01
- 获取数字的最后一位 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
