어떻게 Android 라이브러리 프로젝트를 사용하고 "최종 프로젝트"의 특정 클래스를 덮어 쓸 수 있습니까? 즉Android 라이브러리 Project
아마 안드로이드 라이브러리 프로젝트 모두에 대해 있지만 사용에 의해 것을 달성 할 수 확실히 어떤
어떻게 Android 라이브러리 프로젝트를 사용하고 "최종 프로젝트"의 특정 클래스를 덮어 쓸 수 있습니까? 즉Android 라이브러리 Project
아마 안드로이드 라이브러리 프로젝트 모두에 대해 있지만 사용에 의해 것을 달성 할 수 확실히 어떤
.. 나는 라이브러리 프로젝트를 참조 할과 동시에, 코드의 일부를 변경 자바 언어 자체의 인터페이스와 클래스 상속 기능.
라이브러리 프로젝트는 자식의 부모로부터 자원을 병합/재정의하고 다양한 응용 프로그램 패키지 이름으로 하나의 코드베이스를 사용하도록하는 것으로 잘 보입니다.
감안할 때 AdMob을하고, 나는이 대답을 개정 한 나던 하나를 사용하는 응용 프로그램의 한 버전을 사용하는 라이브러리 프로젝트를 사용하는 방법에 대한 업데이트 된 코멘트 ...
~ 당신이 마음는 AdMob 라이브러리 포장을 (그나마 가정 138KB)를 전체/유료 버전과 함께 사용하는 경우 가장 간단한 방법은 Applcation 클래스를 확장하고 열거 형 및 정적 메서드를 선언하여 AdMob 광고를 표시할지 여부를 결정하는 것입니다.
public class Application extends android.app.Application
{
public enum EditionType { LITE, FULL};
public static int getAdVisibilityForEdition(Context ctx)
{
if (EditionType.valueOf(ctx.getString(R.string.edition)) == EditionType.FULL)
{
return View.GONE;
}
return View.VISIBLE;
}
}
이 클래스는 라이브러리 프로젝트에만 추가됩니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="edition">LITE</string>
</resources>
그것은이 문자열의 값이 라이브러리 프로젝트에 어떤 문제가 나던,하지만 당신은거야 : 프로젝트의 세에서는 같은 /res/Strings.xml에 항목을 추가해야합니다 FULL 및 LITE를 사용하여 유료 버전과 광고 지원 버전에서 다르게 지정하십시오.
마지막으로,이 값에 반응하여 활동이에서 onCreate() 또는 onResume()에서이 같은 전화를 만들기 위해 다음의 AdMob 코드 못해 실제로 얻을려고으로
View ad = (View)this.findViewById(R.id.your_adMob_view_id)
ad.setVisibility(Application.getAdVisibilityForEdition
(this.getApplicationContext()));
이 AdMob을 잘 작동합니다 보기가 보이지 않으면 광고.
AdMob jar에 대한 추가 138K와 전체 버전에서 필요한 매니페스트 권한을 갖고 싶지 않다면 더 세련된 방법이 있지만 AdMob 항목 주위에 일종의 래퍼를 사용하는 것이 좋습니다 버전 간 XML 레이아웃을 변경하거나 (AdMob보기 포함 여부) AdMob보기를 프로그래밍 방식으로 레이아웃에 삽입 할 수 있습니다.
희망이 있습니다.
"인터페이스 및 클래스 상속"(간단한 개요)을 어떻게 사용할 수 있습니까? – yydl
글쎄, 그것은 모든 객체 지향 언어에서 핵심적인 개념이며 일종의 간략한 개요를 제공하기가 어렵습니다. http://download.oracle.com/javase/tutorial/java/IandI/subclasses.html로 시작하거나 할 수있는 일의 예를 제시 할 수 있다면 도움이 될 것입니다. – mmeyer
그러나 결승전에만 존재하기 때문에 라이브러리의 해당 하위 클래스를 참조 할 수는 없습니다. – yydl