Android
RoboGuice
수색…
간단한 예
RoboGuice는 Google 고유의 Guice 라이브러리를 사용하여 Android에 대한 의존성 삽입의 간편성과 간편함을 제공하는 프레임 워크입니다.
@ContentView(R.layout.main)
class RoboWay extends RoboActivity {
@InjectView(R.id.name) TextView name;
@InjectView(R.id.thumbnail) ImageView thumbnail;
@InjectResource(R.drawable.icon) Drawable icon;
@InjectResource(R.string.app_name) String myName;
@Inject LocationManager loc;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
name.setText( "Hello, " + myName );
}
}
Gradle 프로젝트 설치
gradle 빌드 파일의 종속성 섹션에 다음 pom을 추가하십시오.
project.dependencies {
compile 'org.roboguice:roboguice:3.+'
provided 'org.roboguice:roboblender:3.+'
}
@ContentView 주석
@ContentView 어노테이션은 액티비티 개발을 더욱 완화하고 setContentView 문을 대체하기 위해 사용할 수있다.
@ContentView(R.layout.myactivity_layout)
public class MyActivity extends RoboActivity {
@InjectView(R.id.text1) TextView textView;
@Override
protected void onCreate( Bundle savedState ) {
textView.setText("Hello!");
}
}
@InjectResource 주석
모든 유형의 리소스, 문자열, 애니메이션, Drawables 등을 삽입 할 수 있습니다.
첫 번째 리소스를 액티비티에 삽입하려면 다음을 수행해야합니다.
- RoboActivity에서 상속
- @InjectResource로 리소스에 주석 달기
예
@InjectResource(R.string.app_name) String name;
@InjectResource(R.drawable.ic_launcher) Drawable icLauncher;
@InjectResource(R.anim.my_animation) Animation myAnimation;
@InjectView 주석
@InjectView 주석을 사용하여 모든 뷰를 삽입 할 수 있습니다.
다음을 수행해야합니다.
- RoboActivity에서 상속
- 콘텐츠보기 설정
- @InjectView로 견해에 주석 달기
예
@InjectView(R.id.textView1) TextView textView1;
@InjectView(R.id.textView2) TextView textView2;
@InjectView(R.id.imageView1) ImageView imageView1;
RoboGuice 소개
RoboGuice
는 Google 고유의 Guice 라이브러리를 사용하여 Android에 대한 의존성 삽입의 간편성과 간편함을 제공하는 프레임 워크입니다.
RoboGuice 3는 애플리케이션 코드를 줄였습니다. 코드가 적 으면 버그에 대한 기회가 줄어 듭니다. 또한 코드를 더 쉽게 따라 할 수 있습니다. 코드가 더 이상 Android 플랫폼의 메커니즘으로 산재 해 있지 않지만 이제는 응용 프로그램에 고유 한 실제 논리에 집중할 수 있습니다.
아이디어를 얻으려면 다음과 같은 전형적인 Android Activity
의 간단한 예를 살펴보십시오.
class AndroidWay extends Activity {
TextView name;
ImageView thumbnail;
LocationManager loc;
Drawable icon;
String myName;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
name = (TextView) findViewById(R.id.name);
thumbnail = (ImageView) findViewById(R.id.thumbnail);
loc = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);
icon = getResources().getDrawable(R.drawable.icon);
myName = getString(R.string.app_name);
name.setText( "Hello, " + myName );
}
}
이 예제는 19 행의 코드입니다. onCreate()
통해 읽으려고한다면, 정말로 중요한 유일한 것을 찾기 위해 5 행의 상용구 초기화를 건너 뛰어야 name.setText()
: name.setText()
. 그리고 복잡한 활동은 이런 종류의 초기화 코드로 끝날 수 있습니다.
RoboGuice
사용하여 작성된 동일한 앱과 비교해보십시오.
@ContentView(R.layout.main)
class RoboWay extends RoboActivity {
@InjectView(R.id.name) TextView name;
@InjectView(R.id.thumbnail) ImageView thumbnail;
@InjectResource(R.drawable.icon) Drawable icon;
@InjectResource(R.string.app_name) String myName;
@Inject LocationManager loc;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
name.setText( "Hello, " + myName );
}
}
RoboGuice의 목표는 일반적으로 Android에서 유지 관리해야하는 모든 초기화 및 라이프 사이클 코드가 아닌 앱에 대한 코드를 작성하는 것입니다.
주석 :
@ContentView 주석 :
@ContentView 어노테이션은 액티비티 개발을 더욱 완화하고 setContentView 문을 대체하기 위해 사용할 수있다.
@ContentView(R.layout.myactivity_layout)
public class MyActivity extends RoboActivity {
@InjectView(R.id.text1) TextView textView;
@Override
protected void onCreate( Bundle savedState ) {
textView.setText("Hello!");
}
}
@InjectResource 주석 :
먼저 RoboActivity를 상속받은 활동이 필요합니다. 그런 다음 res / anim 폴더에 애니메이션 my_animation.xml이 있다고 가정하면 주석을 사용하여 참조 할 수 있습니다.
public class MyActivity extends RoboActivity {
@InjectResource(R.anim.my_animation) Animation myAnimation;
// the rest of your code
}
@ 삽입 주석 :
RoboActivity에서 활동이 확장되었는지 확인하고 시스템 서비스 구성원에게 @Inject를 주석으로 추가하십시오. Roboguice가 나머지를 할 것입니다.
class MyActivity extends RoboActivity {
@Inject Vibrator vibrator;
@Inject NotificationManager notificationManager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// we can use the instances directly!
vibrator.vibrate(1000L); // RoboGuice took care of the getSystemService(VIBRATOR_SERVICE)
notificationManager.cancelAll();
Views, Resources, Services 및 기타 안드로이드 전용 기능 외에도 RoboGuice는 Plain Old Java Objects를 주입 할 수 있습니다. 기본적으로 Roboguice는 POJO에 인수가없는 생성자를 호출합니다.
class MyActivity extends RoboActivity {
@Inject Foo foo; // this will basically call new Foo();
}