[안드로이드 공부]/애드

안드로이드 앱에 Admob 광고 달기 -Preference Style

코코모아 2015. 8. 18. 15:52

아래는 코모스튜디오가 직접 만든 무료 앱이에요
(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

안드로이드 일반 액티비티라면 애드몹(Admob)광고는 간단히 xml 형식만 지켜주면 달수 있다. 하지만 UI 가 Preference Style (Preference, PreferenceScreen, PreferenceFagment)이라면 얘기가 달라진다. 그냥 붙여서는 절대 안된다.


가정

A 는 PreeferenceScreen XML

B 는 Activity


이 경우 A에 애드몹 설정을 넣고 B의 OnCreate에서 그냥 부르면 죽는다. Preference Style의 UI는 기본적으로 클래스를 새로 만들어서 Overide 해줘야 모양도 바꿀 수 있고, 기능도 넣을 수 있기 때문이다. 


그럼 결론만 보자.


1. A (PreferenceScreen XML)


<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:title="@string/settings">
<com.comostudio.XXXXX.custom.AdmobPreference android:key="ad" />

<PreferenceCategory android:title="@string/settings_category_s">
<CheckBoxPreference 

........



2. C (Admob_preference.XML)


A에 아래 레이아웃을 넣을 수 없기 때문에 새로 하나 만들어 준다.


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">

<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>

</RelativeLayout> 

 

3. D (Preference Class) AdmobPreference.java

A에 집어 넣을 프리퍼런스 클래스를 하나 만든 다음, 광고를 불러 온다.


 public class AdmobPreference extends Preference

{

    private AdView adView;

    LayoutInflater mLayoutInFlater;

    @Override
protected View onCreateView( ViewGroup parent )
{
View view = super.onCreateView(parent);
mLayoutInFlater (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

view = mLayoutInFlater.inflate(R.layout.admob_preference, null);
adView = (AdView)view.findViewById(R.id.adView);

adView.setVisibility(View.VISIBLE);
 AdRequest adBannerRequest = new AdRequest.Builder().build();

        adView.loadAd(adBannerRequest);
       return view;

}


4. B (Activity)

액티비티에서는 요렇게만 해준다.

public AdView mAdView;
@Override
protected void onResume() {
super.onResume();
refresh();
if(mAdView != null){
mAdView.resume();
}
}

@Override
public void onPause() {
if(mAdView != null){
mAdView.pause();
}
super.onPause();
}

@Override
public void onDestroy() {
if(mAdView != null){
mAdView.destroy();
}
super.onDestroy();
} 


5. 정리


A  기존 Preference XML

B  기존 액티비티

C  Admod XML

D  Preferecne를 Overide 하고 광고를 요청하는 Class


6. 결과




 Preference는 일반 액티비티  UI 과는 사용 방법이 많이 다르므로, 항상 긴장을 해야 한다.


모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.