这是我的MainActivity
,游戏中有一个mainView
并且adView
是admob(单独正常工作)。
Game和admob分别很好,但不能一起使用。
package net.canarolab.puzzleroad;
import android.app.Activity;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;
public class MainActivity extends Activity {
// private AdView adView;
private MainView mainView;
private final int MENU_SELECT_RESET = 1, MENU_SELECT_CONTACT = 2;
// MUSICA
MediaPlayer mediaPlayer;// para musica de fondo (se declara aqui para que
// pueda
// utilizarla todos nuestros metodos)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ADMOB
LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout);
// Create the adView
// Please replace MY_BANNER_UNIT_ID with your AdMob Publisher ID
AdView adView = new AdView(this, AdSize.BANNER, "a14e2f8fe3af5a6");
// Add the adView to it
layout.addView(adView);
// Initiate a generic request to load it with an ad
AdRequest request = new AdRequest();
request.setTesting(true);
adView.loadAd(request);
// MUSIC
mediaPlayer = MediaPlayer.create(this, R.raw.merry);
mediaPlayer.setLooping(true);
mediaPlayer.setVolume(100, 100);
mediaPlayer.start();
//MAINVIEW
// TURN OFF THE TITLE
requestWindowFeature(Window.FEATURE_NO_TITLE);
// Apago la barra de estado
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
Intent i = getIntent();
// Activity Quiero solo tapa
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
// View Establezca el
RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.mainView);
mainView = new MainView(this);
layout1.addView(mainView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.activity_main, menu);
menu.add(0, MENU_SELECT_RESET, 0, "Reset");
menu.add(0, MENU_SELECT_CONTACT, 0, "Contact");
return true;
}
@Override
protected void onResume() {
mediaPlayer.start();
// Leí el recuento juego
this.mainView.gameCount.read();
Log.d("", "read");
super.onResume();
}
@Override
protected void onPause() {
mediaPlayer.pause();
// Escribo el recuento de juego.
this.mainView.gameCount.save();
Log.d("", "save");
super.onPause();
// No voy a desaparecer en esta actitud no hay más.
// finish();
}
@Override
protected void onDestroy() {
mediaPlayer.stop();
super.onDestroy();
System.exit(0);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_SELECT_RESET:
this.mainView.gameCount.reset();
Toast.makeText(this, "Has been reset.", Toast.LENGTH_SHORT).show();
return true;
case MENU_SELECT_CONTACT:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "idea");
intent.putExtra(Intent.EXTRA_TEXT, "text of email");
intent.putExtra(Intent.EXTRA_EMAIL,
new String[] { " trabajonacho33@gmail.com" });
startActivity(intent);
}
return false;
}}
,这是我的activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
<RelativeLayout
android:id="@+id/mainView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</RelativeLayout>
</LinearLayout>
我无法在同一版面中看到mainView
和adView
。
我需要混合在同一个屏幕上,但我不知道如何。
我需要将setContentView
更改为xml。
谢谢。
答案 0 :(得分:0)
将fill_parent替换为match_parent无处不在。永远不要使用fill_parent,因为它已被弃用。
尝试将linearLayout和mainView的高度设置为特定值,如150dip(作为测试)。他们现在一起表演吗?
一般情况下你不应该使用System.exit(0),所以想想另一种关闭app的方法。通过查看当前的代码,我认为无论如何你都不需要这样的东西。
答案 1 :(得分:0)
You can use layout to show your add.Just put below code in your layout where ever you want into the screen.
<RelativeLayout
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="bottom"
android:layout_alignParentBottom="true" >
<com.google.ads.AdView
android:id="@+id/ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="Your AddMob ID"
ads:loadAdOnCreate="true"
ads:testDevices="TEST_EMULATOR,TEST_DEVICE_ID_GOES_HERE" />
</RelativeLayout>
将AdmobSDK.jar添加到您的libs文件夹
答案 2 :(得分:0)
在将其添加到布局之前,您需要为admob视图定义布局宽度和高度
LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout);
LinearLayout.LayoutParams lay = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
adView.setLayoutParams(铺设); layout.addView(adView);