Git 관련 내용을 최근 너무 블로깅을 하지 않아서 진도를 빼려고 했는데,
프린트를 해놓은 것을 잃어버려서... 요즘 진도를 빼고 있는 안드로이드 앱 개발 내용으로 블로깅을 하겠다.


앞에서 버튼을 여러개를 만들어서 웹 페이지도 보여주고 전화거는 것도 보여주고 했다.
그런데, 앞에서 다른 내용을 보여준 것은 내가 직접 만든 것이 아니라 안드로이드가 보여주는 것이었다.



이번에는 내가 새로 도화지를 하나 더 만들어서 그 곳에 그림을 그리는 것을 해보자.

안드로이드 용어를 사용해서 다시 말을 해보면,
이전에는 Activity 하나만 만들어서 작업을 했는데, 이번에는 Activity를 추가로 하나 더 만들어보자!



안드로이드에서 하나의 단위를 Activity라고 생각하면 된다.
Avtivity 단위로 별도의 소스파일을 사용하고 별도의 레이아웃을 사용한다.

완전히 새로만들면 귀찮으니 기존의 파일을 가지고 복사해서 사용해보자.


'HelloAndroidActivity.java' 파일 위에서 오른쪽 버튼을 누르고 'Copy'를 한 이후에
바로 [Ctrl]+[v]를 눌러서 붙여넣기를 하면 아래와 같은 화면이 나온다.


이름을 바꿔주자.


이번에는 레이아웃 파일을 복사하자.


'main.xml' 파일 위에서 오른쪽 버튼을 누르고 'Copy'를 선택하고,
[Ctrl]+[v]를 눌러서 붙여넣기를 하면 아래와 같은 화면이 나온다.


일단 파일이름을 아래와 같이 적어보자.


입력은 되는데, 오른쪽 밑의 창을 보면 아래와 같은 붉은 글씨가 보인다.
대문자를 사용하면 안되나보다.


파일 이름에서 [F2] 버튼을 누르고는 아래와 같이 소문자로만 파일이름을 변경하자.


레이아웃을 바꿔보자.


이번에 만든 Activity로 전환이 되었을 경우에
mainActivity로 되돌아가는 기능을 하는 버튼 하나만 만들어보자.


버튼 하나만 남기면 된다.

주의할 것은 아래와 같다.
   - R.layout.otheractivity
   - R.id.backBtn
   - finish();


그런데, 이렇게 만든 Activity는 바로 사용할 수 없다.
등록을 해야하는 것이다.


'Package Explorer'의 밑부분에 위치한 'AndroidManifest.xml' 파일을 선택해보자.


밑의 탭에서 "AndroidManifest.xml"을 선택하면 나오는 화면에서 아래의 내용을 추가하자.

<activity android:name=".OtherActivity">
</activity>


이제 새로 만든 Activity를 사용할 준비는 모두 끝났다.

마지막으로 새로 만든 Activity를 호출하는 부분을 추가하자.


기존에 만든 첫 번째 버튼에 새로 만든 Activity로 넘어가는 코드를 추가하자.

Intent myIntent = new Intent(getApplicationContext(), OtherActivity.class);
startActivity(myIntent);


이제 다 되었다.
에뮬레이터로 결과를 확인해보자.


기본적인 앱에 대해서 충분히 살펴보았다.


지금까지의 내용에 대해서는 '이지스퍼블리싱'에서 출판한 '안드로이드 앱 프로그래밍'이라는 책을 참조하였다.

반응형

앞에서 간단한 수정으로 버튼을 추가하는 것에 대해서 살펴보았다.
이번에는 버튼을 조금 더 추가해보자.


     <Button
        android:id="@+id/callBtn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="전화걸기" />
   
    <Button
        android:id="@+id/naverBtn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="네이버" />

각 버튼에 전화를 거는 기능과, 웹페이지를 보여주는 기능을 추가해보겠다.


Button callButton = (Button) findViewById(R.id.callBtn);
callButton.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
      Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:/010-1234-5678"));
      startActivity(myIntent);
   }
});

Button naverButton = (Button) findViewById(R.id.naverBtn);
naverButton.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
      Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.naver.com"));
      startActivity(myIntent);
   }
});

소스 파일을 수정하기 전에, 'main.xml'파일을 세이브를 먼저 하자.
그런 후 위와 같이 소스 수정을 한 후 [Ctrl]+Shift]+[O] 기능 단축키로 import 를 확장하자.


그런 후 에뮬레이터에 실행 후 버튼을 하나씩 눌러보면... ^^


그런데, 소스를 보면 좀 재미있는 것이 많다.

그 중 하나가
웹페이지를 여는 것과 전화를 거는 것이 방식이 같다는 점이 재미있다.
프로토콜로 "tel:/"을 보내면 된다~!

반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

안드로이드 어플 개발 환경 만들기  (0) 2019.03.31
새로운 판 만들기  (0) 2012.03.12
버튼을 추가해보기  (0) 2012.03.06
첫 소스 분석 - HelloAndroid  (0) 2012.03.05
여보세요!? 안또라이들!!!  (0) 2012.02.28

2009년도에 만들어졌지만, 2011년도에 상영된 우리의 추억을 자극하는 영화다.


뭐 "드래곤볼 에볼루션" 말아먹은 것처럼,
이 영화도 가뿐히 말아먹었다.



보는 바와 같이 투자금의 반절도 건지지 못했다는...


이 영화가 그나마 인정을 받는 것은 주인공이 이쁘다는 것! ^^

'크리스틴 크룩(Kristin Kreuk)'이라는 아가씨는 1982년생으로 캐나다 출신이다.
2010년도 벤허라는 영화에서도 주연으로 출연을 했다.
스몰빌이라는 미드의 여인네라는 것이 더 유명하려나!?


감독인 '안드레이 바르코비악(Andrzej Bartkowiak)'은
2005년도 둠을 연출했었고,
스피드나 리쎌웨펀4 등의 촬영감독 출신이다.

그래서인지 춘리의 전설 역시 상당히 깔끔하고 괜찮은 영상을 보여준다.



문제는 이 영화의 스토리인데,
스트리트 파이터라는 게임의 인기가 이미 시들해진 상태에서
이 영화가 나왔다는 점이 첫번째 문제이고,
더 큰 문제는 그럼에도 불구하고 스트리트 파이터의 매니아들로부터도
외면을 받을 수 밖에 없는 원작과 다른 설정이나 스토리를 보여준다는 점이다!

흥행을 위해서 스토리를 바꿨다면,
원작을 능가하는 재미를 선사하던지, 감동을 선사해줘야하는데...
최소한 보다 더 치밀한 설정을 잡았어야 했는데...



"춘리의 전설"이라는 타이틀을 보고 정말 기대를 한 사람들은
여주인공의 허벅지를 보고는 좀 실망을 하게 된다.

춘리의 환상의 발차기를 기대한 사람들은
한 두 번 나오는 발차기 스킬을 보고는 또 실망을 하게 된다.

춘리의 귀여운 머리를 기대한 사람들 역시
한 번 나오는 귀여운 호빵 2개를 보곤... ㅠㅠ



이 영화는 그냥 스트리트파이터라는 타이틀을 빼고 상영을 했으면
그나마 선방하지 않았을까 생각한다.
스트리트파이터랑은 전혀 상관없는 영화이니까~

영상 깔끔하게 잘 찍었고,
여 주인공 이쁘고, 액션도 나쁘지 않고...
그냥 그냥 그럭저럭 나쁘지 않은 영화인데...
아~ 특별히 좋은 점도 없는 영화구나...
어짜피 망했겠다.



그냥, 시간 많이 남아돌면 한 번 봐줄만한 영화다.


네이버 평점 : 5.09
나만의 평점 : 5.16



Naver
http://movie.naver.com/movie/bi/mi/basic.nhn?code=47524
Wikipedia
http://en.wikipedia.org/wiki/Street_Fighter:_The_Legend_of_Chun-Li
Internet Movie Database
http://www.imdb.com/title/tt0891592/

[출처]
* 포스터 및 스크린샷은 위키피디아에서 퍼왔음을 밝힙니다.
(영화 관련 저작권 괴담은 무서워요~)
[ 주의 사항 ]
어디까지나 개인적인 영화평을 적는 공간이니만큼,
개인의 취향은 존중해주시면 감사하겠습니다.
건전한 비판이나 조언은 언제든 환영입니다!!!

반응형

새로 소스를 만들기보다는 처음 만들었던 것을 가지고 수정해나가도록 해보자.

우선 Button을 하나 만들어보자.
기존에 단순히 글씨만 보여주었던 TextView를 Button으로 변경해보겠다.


본래 위와 같았던 소스에서, "TextView"를 "Button"으로 글씨만 변경해보자.


위와 같이만 하면 된다.
그리고 에뮬레이터로 Run As 시키면...


위와 같이 버튼으로 바뀐다.
눌러보면 색이 반전되면서 눌려지는 Button인 것을 확인할 수 있을 것이다.


그러면, 이번에는 눌리기만 하는 것이 아니라
누르면 뭔가 행동을 취하도록 해보자.

그러기 위해서는 이 Button을 지칭하기 위해서 id를 만들어줘야 한다.


 android:id="@+id/chaniBtn"

<Button ... /> 사이에 위와 같이 id를 지정해주는 한 줄을 추가해주면 된다.

그리고 해당 버튼을 조작하기 위해서 소스파일에서 받아오는 부분을 넣어보자.


 Button chaniButton = (Button)findViewById(R,id,chaniBtn);

위 스크린샷에는 오타가 하나 있다 ^^
박스에 있는 것이 맞다! ^^

Resource의 id 중에서 chaniBtn이라는 놈을 찾는데,
그 속성은 Buuton이고 그 놈을 chaniButton이라는 변수에 지정하라는 의미이다.


chaniButton.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
      Toast.makeText(getApplicationContext(), "차니 버튼 꾹!", 1500).show();
   }
});

그 밑에 위와 같은 부분을 추가하자.

chaniButton이 꾹 눌리는 것을 감시하고 있다가,
눌려지면 "차니 버튼 꾹!"이라는 글씨가 나오는 작은 창을 1500ms 시간 동안만 보여주라는 의미이다.

그런데, 위 스크린샷과 같이 빨간 줄이 되어있는 부분이 꽤 보일 것이다.
C언어의 #include <>와 같이 사용할 함수들이 들어있는 헤더파일과 같은 것들을 적어줘야 하는데
물론 Java에서는 import를 해주는 것이지만...

일일이 기억하고 적어주기가 귀찮은 귀차니스트 여러분을 위한 편리한 기능이 물론 있다.
[Ctrl]+[Shift]+[O]를 눌러주면 된다!!!


그런데도 빨간줄이 그어져 있다면 오타가 났을 확률이 높다.
마우스를 가져다대면 위 스크린샷과 같이 친절한 안내를 해준다.

수정하자!!!


자~이제 위와 같이 빨간펜 선생님의 지적이 없어지면 된다!!!

Run Application 해보자.

버튼을 누르면 밑에 작은 창(?)이 나오는 것이 보이면 성공!!!



쨘~
반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

새로운 판 만들기  (0) 2012.03.12
버튼을 더 추가해보기  (0) 2012.03.11
첫 소스 분석 - HelloAndroid  (0) 2012.03.05
여보세요!? 안또라이들!!!  (0) 2012.02.28
Android Emulator 실행  (2) 2011.12.11

지난 번에 만든 첫 프로그램에 대해서 조금 더 살펴보자.



C 언어의 main(){} 의 역할을 하는 것은 무었일까?!
위 샘플 소스를 보면 잘 알 수 있을 것이다.


화면에 글씨를 뿌린 부분은?!

 setContentView(R.layout.main);

그런데, 화면에 뿌려진 글씨는 어디에 있을까!?



'Package Explorer'에서 [HelloAndroid]-[res]-[layout]-[main.xml]을 선택하자.
그 다음 오른쪽 화면 밑 부분에서 'Graphical Layout' 옆에 있는 'main.xml'을 선택하자.


중간 아래 부분을 잘 살펴보면, layout 말고 "android:text="@string/hello" 부분이 있다.
텍스트를 설정을 하는데, 그 내용은 string 타입의 변수(?) 'hello'에 저장된 값을 사용하라는 의미로 볼 수 있다.

그러면, 그 변수값은 어디서 확인할 수 있을까?!

'Package Explorer'에서 [HelloAndroid]-[res]-[values]-[strings.xml]을 선택하자.
그 다음 오른쪽 화면 밑 부분에서 'Resources' 옆에 있는 'strings.xml'을 선택하자.


xml 파일의 중간을 보면, 아래 부분을 확인할 수 있을 것이다.

 <string name="hello">Hello World, HelloAndroidActivity!</string>


전체적인 구조를 파악할 수 있을 것이다!!!



이제는 조금 바꿔볼까요!?


위와 같이 string 내용을 살짝 바꿔보고,


'Run HelloAndroid'를 실행하자!


그런데, 수정 후 저장을 안했기에 실행 전에 Save를 할 것인지 물어보는 창이 뜬다.
저장을 해주면 된다.


그러면, 변경된 내용으로 App이 실행되는 것을 확인 할 수 있다.


위 과정을 보면, 실제로 소스 파일을 수정하지 않고 리소스 파일 수정만으로 다른 결과가 나오는 것을 확인할 수 있다.
프로그램과 리소스의 분리를 기본으로하는 안드로이드의 철학을 엿볼 수 있다.

반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

버튼을 더 추가해보기  (0) 2012.03.11
버튼을 추가해보기  (0) 2012.03.06
여보세요!? 안또라이들!!!  (0) 2012.02.28
Android Emulator 실행  (2) 2011.12.11
Android SDK 설치하기  (0) 2011.12.10

앞에서 Git Server 를 두고 그곳에서 소스를 받아오고 작업한 내용을 넣는 것을 살짝 살펴보았다.


Git을 소개할 때 항상 나오는 "분산 관리", 그에 따라 나오는 이야기는 바로 "복제"이다.
무슨 말인고 하니, 서버와 클라이언트 모두 똑같은 데이터를 가진다는 점을 특징으로 한다고 한다!

기존의 서버-클라이언트 구조인 Subversion 등과는 달리,
Git은 서버와 클라이언트 개념이 없이 모두 같은 데이터를 가지고 동등한 입장이라고들 말한다.

하지만, 이 이야기로 인하여 Git에 대한 많은 오해가 있고, 또 괜히 어려워 하게 되는 것 같다.


분산 관리 도구인 Git이지만,
형상관리 도구의 특성상 분명히 기본적인 구조는 "서버-클라이언트"이다.

즉, 최종적인 결과물을 저장하는 서버의 역할을 하는 repository는 분명히 존재한다.
그 외 clone을 받아간 repository는 모두 클라이언트 이다.

clone을 -bare 형식으로 하여 Server 역할을 할 수 있는 repository를 만들었더라도
전체 구조에서는 어디까지나 클라이언트의 역할이다.

말 장난같이 들릴지 모르겠지만, 위의 사항에 대해서는 잘 이해를 하였으면 좋겠다.



전체적인 흐름은 위와 같다.

   - Remote repository에서 'git clone'을 통해 소스를 받아오고
   - 소스 수정 작업을 한 뒤에
   - 'git add'를 통해 staged 상태로 만든 뒤
   - 'git commit'을 하고나서
   - 변경 사항을 'git push'를 통해 Remote repository로 넣어준다.


이 부분에 대해서 뭔가 말할 거리가 많다고 생각했는데,
막상 적다보니 짧은거 같아서 뭔가 조금 찜찜(?)한데.... 뭐 할 말은 다 한 것 같다!
빼먹은 부분이 있으면 나중에 다시 더 추가하도록 하고...
최신 트랜드에 따르기 위해서 요즘 유행한다는 인후염을 겪고 있다보니 헥헥....

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Remote - remote, fetch, pull  (0) 2012.03.19
업데이트 - git pull, 중간 정리  (0) 2012.03.17
Git Server - push + 한글  (2) 2012.02.26
Git Server - Remote Connect  (0) 2012.02.25
Git Server - SSH  (3) 2012.02.23

세발 자전거로 만족을 하지 못하는 공주님을 위해서 구매한 밸런스 바이크

페달이 없이 발로 타는 두발 자전거를 밸런스 바이크라고 한단다.


오늘도 사진을 찍는데,
자청해서 모델을 하고 있는 공주님 ^^

앞머리가 없으니... 잘생겼구나...


2011년 5월 중순경 구매했는데...
10만원 정도 주고 구매한 것으로 기억나는데,
지금도 그 정도 하는 것 같다.


뭐, 이태리 제품이라고 광고를 열심히 하는 제품이다.


아직 박스도 그대로 있고...


설명서와 도구도 그대로 있다.


딱 한 번 밖으로 가져가서 탔는데...
놀이터에서만 타서인지 바퀴는 멀쩡 ^^


두발 자전거이다보니 사용감은 있다.
주차가 안되는 관계로...^^


저렇게 눞여 놓아야 하는 점은 좀 에러~
하지만, 밸런스바이크 대부분 다 그런 것 같다.


사용해본 소감은...

우리 공주님은 참 좋아했는데, 와이프는 좀 싫어했다.
그냥 세발 자전거 타다가 네발 자전거로 넘어가면 되지,
왜 이런 이상한 자전거 샀냐면서... ㅠㅠ

사실 좀 애매한 제품이긴하다.

운동 신경을 기르는데는 조금 도움이 될 것 같고,
집에서 자전거 타고 놀게 하기에도 적당하다.
밖에서 타게 하기에는 조금 애매...^^

네발 자전거 타기 전에 잠시 균형 감각기르도록 하거나
집에서 자전거 놀이하도록 하기에 적당한 그런 제품?!

반응형

프로그래밍 언어를 배울 때에 제일 먼저 하는 것!!!!

Hello 만들기!!!



이클립스 실행 후, [File]→[New]→[Other] 선택


(Android)→(Android Project)→[Next>]


Project Name: "HelloAndroid"

기재 후 나머지는 Default 값 그대로 진행


Target 을 골라야하는데,
최신 버전으로 고르고 싶더라도 낮은 버전을 고르는 것이 좋다.

하위 버전을 대상으로 개발을 해야 하위 호환성이 좋아진다.
높은 버전을 대상으로 개발을 하게 되면 낮은 버전에서 실행이 안될 수가 있다.

"Galaxy Tab" 用 App을 개발해보기 위해서 아래와 같이 선택해 보았다.


Package Name: com.whatwant.hello

패키지 이름을 지어줘야 하는데, 도메인주소를 거꾸로 해놓은 방식으로 만들어줘야한다.


오른쪽의 Package Explorer에서 소스파일을 선택해보면 제공된(?) 소스를 확인 할 수 있다.


위 스크린샷의 스마트폰 모양의 아이콘을 누르면 에뮬레이터를 실행할 수 있다.


App을 실행할 수 있는 가상 디바이스를 만들어보자.


GALAXY Tab으로 만든 후, Start를 해보자.


Scale display to real size는 에뮬레이터를 디스플레이할 때 어떤 비율로 할 것인지를 정하는 것이다.
밑의 Scale, 0.54 비율로 디스플레이하라는 것이다.

GALAXY Tab 해상도가 높기 때문에 조금 줄여서 디스플레이하도록 했다.


잘 실행된다.


미리 한 번 눌러버려서 위 스크린샷처럼 나오는데...

Run As를 누르면 어떤 형식으로 실행할 것인지 물어보는 창이 뜬다.
Android Application 을 고르면 된다.


에뮬레이터에 해당 어플리케이션이 잘 실행된 것을 볼 수 있다!!!



우리의 Hello 프로젝트는 여기까지~!!!
반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

버튼을 더 추가해보기  (0) 2012.03.11
버튼을 추가해보기  (0) 2012.03.06
첫 소스 분석 - HelloAndroid  (0) 2012.03.05
Android Emulator 실행  (2) 2011.12.11
Android SDK 설치하기  (0) 2011.12.10

+ Recent posts