추상클래스, 인터페이스
'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글
다형성-인터페이스 (0) | 2013.10.02 |
---|---|
다형성-추상클래스 (0) | 2013.10.01 |
커넥션 풀 (0) | 2013.09.30 |
[이클립스 플러그인]SubVersive, svnConnector(svn 설치) (0) | 2013.09.30 |
아파치/톰캣 설치하기 (0) | 2013.09.27 |
다형성-인터페이스 (0) | 2013.10.02 |
---|---|
다형성-추상클래스 (0) | 2013.10.01 |
커넥션 풀 (0) | 2013.09.30 |
[이클립스 플러그인]SubVersive, svnConnector(svn 설치) (0) | 2013.09.30 |
아파치/톰캣 설치하기 (0) | 2013.09.27 |
-버튼 아이디에 @+id/이름 이라고 되어있다.
R.java에 등록하고, 자바 파일에서 호출하여 어떠한 기능을 가능하도록 하는것이다.
리스너를 추가시키기 위함이다.
-레이아웃에 버튼이 있다. 레이아웃만 호출하면 버튼에 기능을 넣을 수가 없다.
그 버튼까지 R.java에 등록하여 자바에서 호출하여 기능을 넣을 수가 있다.
-Activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <!-- 버튼 하나를 생성--> <!-- R.java에 등록하여 자바파일에서 이 버튼을 호출하여 리스너를 부여함. --> <Button android:id="@+id/event_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/event_btn" /> </RelativeLayout> |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package com.wakeup.event_test; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button)this.findViewById(R.id.event_btn);//R.java에 등록된 버튼을 호출. btn.setOnClickListener(new View.OnClickListener() {//익명 클래스를 생성. 1회성 클래스이기 때문 @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "안녕하세요", 0).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } |
결과
버튼을 누르면 "안녕하세요" 문자열이 뜬다.
android.widget.TextView xml 속성 목록 (1) | 2013.10.02 |
---|---|
android.view.View의 xml 속성 목록 (1) | 2013.10.02 |
안드로이드 컴포넌트 (0) | 2013.10.01 |
ADT 안드로이드 프로젝트 구조 (0) | 2013.10.01 |
[9.30]R.java 와 AndroidManifest.xml (0) | 2013.09.30 |
1. Activity
안드로이드 프로그래밍을 하면 만나는 가장 기초적인 컴포넌트로서, 사용자 인터페이스의 기본 단위.
앱의 한 화면을 자체를 Activity 라 하고, 일반적으로 앱은 여러개의 Activity로 이뤄지며,
또 하나의 Activity는 여러개의 View(ex: textview, imageview ...) 로 이뤄져 있다.
2. Service
Activity가 화면에 보이고 사용자에게 입출력을 제공한다면, Service의 경우 그와 반대로 화면에 출력되는 UI가 없으며, 백그라운드에서 길고 반복적인 작업을 하는데 사용된다. 예를 들자면 일반적인 음악재생 앱의 경우, 노래 재생은 계속하되 다른 앱을 실행한다던가 다른 작업을 할수 있다. 즉, 여기서는 노래가 Service로 실행중인것이다. 앞서 말했듯 Service는 UI 가 없기 때문에, 사용자와 통신하고자 한다면, 중간에 Activity를 삽입하고 이를 통해 중간 매개체 삼아 통신한다. [ Service <-> Activity <-> 사용자 ]
재미있는 특징으로는 Service는 하나의 앱에 종속적이지 않기 때문에 하나의 Service로 다양한 앱들과 통신이 가능하다는 점.
3. Broadcast Receiver
안드로이드는 시스템의 기능/이벤트들이 발생하면, 이를 Broadcast 한다. 네트워크에서의 Broadcast 개념과 비슷하며, 안드로이드에서는 각 앱들로 이 신호를 전달하게 된다. 따라서 각 앱들에 이 신호를 받을수 있는 Broadcast Receiver 만 구현해 놓으면, 언제든지 각종 시스템 이벤트에 대비하고 이를 활용할수 있다. 여기서 시스템 이벤트들이란, 전화가 왔다!, 사진을 찍었다!, 배터리가 없다!, 문자가 왔다!, 등등..
시스템 이벤트만 언급 했지만 사실 하나의 일반 앱에서도 시스템에 정의된 신호가 아닌 임의 Broadcast 를 날릴수 있고, 이를 활용 가능하다.
4. Content Provider
앱 간에 데이터를 송수신하는데 사용된다. 일반적으로 SD카드나 외장메모리는 아무 앱이나 접근가능하지만, 앱 패키지 내의 폴더는 다른앱들이 접근 불가능하다. 이때, 해당 폴더의 데이터에 접근하고 이를 사용하고자 할때 사용하는 것이 Content Provider 이다. 대표적으로 카톡이 있겠다. 이놈은 설치만 하면 자동으로 주소록과 동기화하여 친구들을 마구 등록해 놓는다. 좋은 기능이기도 하지만 어찌보면 짜증나기도 하지만, 여하튼! 주소록 앱에서 Content Provider 를 제공하고, 이를 활용하여 카톡은 Content Resolver 라는 클래스를 통해 주소록 DB 에서 접근하여 정보를 가져오는 것이다.
[출처] [이론] 안드로이드 컴포넌트 4가지|작성자 개구리
android.view.View의 xml 속성 목록 (1) | 2013.10.02 |
---|---|
[10.1]이벤트 처리 (2) | 2013.10.01 |
ADT 안드로이드 프로젝트 구조 (0) | 2013.10.01 |
[9.30]R.java 와 AndroidManifest.xml (0) | 2013.09.30 |
[9.30]안드로이드 project 시작 (0) | 2013.09.30 |
http://cafe.naver.com/jjdev/1004
안드로이드 프로젝트 구조.
1. 프로젝트 클래스. 생성된 컴포넌트가 위치한다.
2. 안드로이드는 포르젝트 내 모든 리소스, 객체는 R.java에 등록할 수 있으며 id를 부여, id 를 부여하여 관리한다.
3. 컴파일 파일이 저장되는 폴더.
- 안드로이드 프로젝트는 컴파일 되면 .apk라는 파일로 컴파일 되고 이것은 안드로이드 전용 JVM(달빅)에 실행된다.
4. 리소스 폴더.
- 문자열, 이미지, 배열등 해당. 뷰에 해당하는 레이아웃도 여기에 위치한다.
- assets/ 폴더와 /res 폴더가 있다.
- /res에는 리소스가 위치하며 모든 파일은 xml형태로 존재하며,
모든 리소스의 메모리 주소값은 R.java에 등록이 되며 R.java를 통해 리소스를 참조 할수 있다.
- assets/는 용량이 비교적 큰 리소스가 위치.
-drawable : 사진파일
-
5. AndroidManifest.xml
- 프로젝트의 환경설정 파일(이름, 버전, 구성등에 대한 정보를 가진다.)
[10.1]이벤트 처리 (2) | 2013.10.01 |
---|---|
안드로이드 컴포넌트 (0) | 2013.10.01 |
[9.30]R.java 와 AndroidManifest.xml (0) | 2013.09.30 |
[9.30]안드로이드 project 시작 (0) | 2013.09.30 |
[9.30]안드로이드 개발을 위한 설치와 셋팅 (0) | 2013.09.30 |
jdbc를 사용하여 db에 접속하기 위해서는 드라이버를 로드하고 connection 객체를 생성해야 한다. 이 경우 db에 접속할 때마다 드라이버를 로드하고 커넥션 객체를 생성하고 close해야 하는데 접속자가 많을 경우 서버에 부하를 줄 수 있다.
이를 해결하기 위해 커넥션 풀을 사용한다.
1. Connection pool
db와 연결된 connection을 미리 만들어 pool속에 저장했다가 접속이 필요한 때에 불러와 사용하고 다시 pool로 반환하는 기법. 다 사용한 커넥션을 재사용 하기 때문에 다시 커넥션을 생성 할 필요가 없다.
2. 커넥션 풀 사용하기.
2-1. 라이브러리 다운.
- http://commons.apache.org/proper/commons-collections/
- http://commons.apache.org/proper/commons-dbcp/
- http://commons.apache.org/proper/commons-pool/
각각 접속하여 다운 받는다.
2-2. 코드 추가.
- /META-INF/context.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
<Context>
<!-- 오라클 db에 접속하기 위한 코드 --><!-- 이름을 잘 기억하고 있어야 한다. -->
<Resource name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:xe"
username="scots" password="tiges"
maxActive="20" maxIdle="10" maxWait="-1"/>
<!-- mysql db에 접속하기 위한 코드 -->
<Resource name="jdbc/mymysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/exam"
username="root" password="java1234"
maxActive="200" maxIdle="100" maxWait="-1"/>
</Context> |
-/WEB-INF/web.xml <web-app>태그 사이에 추가.
1
2
3
4
5
6 |
<resource-ref>
<description>Connection</description>
<res-ref-name>jdbc/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> |
2-3. jdbc에 적용.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
public class DBManager {
public static Connection getConnection(){
Connection conn = null;
try{
// 이부분을 추가하면 된다.
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/mymysql");//"jdbc/myoracle"
conn = ds.getConnection();
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
} |
다형성-추상클래스 (0) | 2013.10.01 |
---|---|
추상클래스, 인터페이스 (0) | 2013.10.01 |
[이클립스 플러그인]SubVersive, svnConnector(svn 설치) (0) | 2013.09.30 |
아파치/톰캣 설치하기 (0) | 2013.09.27 |
[자바 라이브러리]JDBC (0) | 2013.09.27 |
1. R.java
- 모든 리소스는 R.java에 등록이 된다.
- 따라서 리소스를 호출할 때에는 R.java파일을 통하면 된다.
- 가장 중요한 파일.
- 전부 final과 static이다. 한번 실행되면 변수값 수정과 메소드 오버라이딩이 불가능하고, new연산자로 생성하지 않고 호출이 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package com.wakeup5.hello; public final class R { public static final class attr { } public static final class dimen { public static final int activity_horizontal_margin=0x7f040000; public static final int activity_vertical_margin=0x7f040001; } public static final class drawable { public static final int ic_launcher=0x7f020000; } public static final class id { public static final int action_settings=0x7f080001; public static final int button1=0x7f080000; } public static final class layout { public static final int activity_main=0x7f030000; } public static final class menu { public static final int main=0x7f070000; } public static final class string { public static final int action_settings=0x7f050001; public static final int app_name=0x7f050000; public static final int hello_world=0x7f050002; } public static final class style { public static final int AppBaseTheme=0x7f060000; public static final int AppTheme=0x7f060001; } } |
-리소스 호출 방법.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package com.wakeup5.hello; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//R을 통해 activity_main라는 뷰를 호출했다. } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } |
2. AndroidManifest.xml
- 웹 어플리케이션에 비교하면 web.xml에 해당하는 파일
- 여기에는 안드로이드 고유 이름과 버전이 들어있어, 중요한 파일이다.
- 컴포넌트 생성과 액티비티라는 컴포넌트와 뷰에 해당하는. xml파일을 연결해주는 역할
- AndroidManifest.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wakeup5.hello" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" ><!--모든 컴포넌트는 여기에 등록을 해야한다. --> <activity android:name="com.wakeup5.hello.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <!--해당 액티비티를 메인 액티비티라고 설정함. --> <category android:name="android.intent.category.LAUNCHER" /> <!--해당 액티비티를 안드로이드 런처에 등록. --> </intent-filter> </activity> </application> </manifest> |
-진동, gps사용등 퍼미션(권한)설정을 할 수 있다.
[10.1]이벤트 처리 (2) | 2013.10.01 |
---|---|
안드로이드 컴포넌트 (0) | 2013.10.01 |
ADT 안드로이드 프로젝트 구조 (0) | 2013.10.01 |
[9.30]안드로이드 project 시작 (0) | 2013.09.30 |
[9.30]안드로이드 개발을 위한 설치와 셋팅 (0) | 2013.09.30 |
안드로이드 어플리케이션 프로젝트 생성
1. package name 설정.
-package name : 모든 어플리케이션은 고유의 이름을 가진다. 그 어떤 어플리케이션과도 중복되는 이름이 되어서는 안된다.
2. activity 생성.
- activity는 화면에 보이는 것. 하나의 activity는 어플리케이션의 한 페이지의 화면이다.
- 안드로이드의 컴포넌트는 4개. 그중 화면에 보이는것은 activity 즉, ui를 가질 수 잇는것.
- activity종류
blank : 보통의 어플리케이션의 화면을 보여주는 액티비티. 풀스크린이 아닌 화면.
fullscreen : 게임화면같은 화면 전체를 사용하는 액티비티.
master/detail flow : 시작할때 어떤 액티비티를 보여줄지 선택할수 있는 액티비티
3.메인 액티비티 이름 설정.
- 안드로이드 어플리케이션은 뷰/기능을 분리시켰다. 액티비티는 반드시 하나의 뷰파일을 가져야 한다.
- 액티비티 이름은 MainActivity, 이 것이 가지는 뷰는 activity_main이라는 xml파일이다.
4.완료
-finish를 클릭하면 하나의 프로젝트가 생성된다.
[10.1]이벤트 처리 (2) | 2013.10.01 |
---|---|
안드로이드 컴포넌트 (0) | 2013.10.01 |
ADT 안드로이드 프로젝트 구조 (0) | 2013.10.01 |
[9.30]R.java 와 AndroidManifest.xml (0) | 2013.09.30 |
[9.30]안드로이드 개발을 위한 설치와 셋팅 (0) | 2013.09.30 |
0. 선행 설치 - 먼저 jdk 설치가 되어 있어야 함.
1. ADT와 Android SDK 설치
1-1. ADT(Andriod developer tool) 다운로드와 실행.
- Andriod developer tool : 안드로이드 개발을 위한 툴
- 설치 되는 것
- http://developer.android.com/index.html 페이지 접속.
컴퓨터에 따라 32-bit 혹은 64-bit를 선택후 다운 받으면 된다.
다운로드를 받고 압축을 풀면 안드로이드 개발을 위한 플러그인이 깔린 이클립스가 있다.
이클립스를 실행하면 다운로드 끝.
1-2.Andloid SDK 설치하기.
-설치 할 것을 체크후 인스톨을 누른다.(이경우는 학습을 위해 전부 다운 받음.)
- 전부 동의후 인스톨을 누르면 다운로드와 설치가 시작된다.
- 전부 다운 받을 시 용량이 4Gb정도 되니 하드디스크 여유 용량을 확보하면 좋다.
2.셋팅하기
2-1 Android Virtual Device 셋팅
-클릭.
-새로운 셋팅을 위해 new를 누른다.
- 밑줄 친 입력폼은 필수.
- 상자는 옵션
* keyboard : 에큘을 사용하는데 실제 키보드를 사용할 수 있도록 하는것.
- 새로 생성이 되었으면 start 버튼을 누른다.
- 상자는 윈도우 화면에 뜨는 에뮬레이터 크기를 설정. screen size를 7정도로 하면 좋다.
- wipe user data : 실행 할때 에뮬레이터 상태를 초기화함.
- launch 버튼을 누르면 에뮬레이터가 실행 된다.
[10.1]이벤트 처리 (2) | 2013.10.01 |
---|---|
안드로이드 컴포넌트 (0) | 2013.10.01 |
ADT 안드로이드 프로젝트 구조 (0) | 2013.10.01 |
[9.30]R.java 와 AndroidManifest.xml (0) | 2013.09.30 |
[9.30]안드로이드 project 시작 (0) | 2013.09.30 |
인스톨창을 실행하는 메뉴 위치.
1.svn을 위한 SubVersive플러그인 설치.
- http://download.eclipse.org/technology/subversive/1.1/update-site/ (버전이 바뀔경우 주소가 달라질 수 있다.)
주소를 넣으면 리스트가 뜬다. SVN Team을 선택후 next를 눌러 설치한다.
- 설치 완료가 되면 이클립스가 재부팅 된다.
2.svnConnector 플러그인 설치
- http://community.polarion.com/projects/subversive/download/eclipse/3.0/kepler-site/ (버전이 바뀔경우 주소가 달라질 수 있다.) 입력후 리스트가 뜨면 SVN Kit중 버전을 선택한 후 next를 눌러 설치를 시작한다.
- 1.3.8 버전 외에 여러가지가 있으므로 잘 선택하여 설치한다.
3. connector 버전 확인, 선택하기
추상클래스, 인터페이스 (0) | 2013.10.01 |
---|---|
커넥션 풀 (0) | 2013.09.30 |
아파치/톰캣 설치하기 (0) | 2013.09.27 |
[자바 라이브러리]JDBC (0) | 2013.09.27 |
자바 개발을 위한 이클립스 설치하기 (0) | 2013.09.27 |
다운로드 페이지 - http://tomcat.apache.org/
웹서버(아파치)와 웹 컨테이너(톰캣)이 합쳐진
웹 어플리케이션이다.
실행 하기 위해서는
jdk/bin 폴더를 PATH 에,
jdk를 JAVA_HOME,
jre를 JRE_HOME 으로 패스를 잡아야 한다.
이클립스 쓰면 할 필요 없음.
커넥션 풀 (0) | 2013.09.30 |
---|---|
[이클립스 플러그인]SubVersive, svnConnector(svn 설치) (0) | 2013.09.30 |
[자바 라이브러리]JDBC (0) | 2013.09.27 |
자바 개발을 위한 이클립스 설치하기 (0) | 2013.09.27 |
자바 설치하기. JDK(SE)7 (0) | 2013.09.27 |