0.안드로이드 스튜디오를 설치한뒤에 프로그램을 실행하면 다음과 같은 창이 뜬다. (설치는 매우 쉬움. 생략)


1. 자 이제 새로운 안드로이드 프로젝트를 만들어보자. 맨 위에 Start a new Android Studio Project선택!


2. Application name을 정하고 회사 도메인을 기입한다(패키지는 이것에 따라 자동으로 변경된다)


3. 어떤 플랫폼에서 어떤 SDK 버전으로 돌릴 것인지 선택. 모바일 개발이므로 Phone and Tablet만 체크 후 Next


4. 처음 앱 프로젝트 생성시 액티비티 유형 선택.  기본적으로 Empty Activity가 선택된다.


5. 액티비티 이름과 레이아웃 이름을 설정한다. 또는 레이아웃 파일을 안 만들 수도 있다(Activity Name 아래 체크 해제)


6. 위에 Finish버튼 클릭하면 빌드를 진행한다. 앱 프로젝트를 만들고 있는 중이니 기달리면 된다.


7. 좀 더 기다리면 드디어 프로젝트가 만들어졌다.

도움말 창은 닫아버리고, 잘 되는지 테스트하기 위해 디바이스를 꽂고 위에 재생.플레이 버튼을 누르면 됨~~


'Android > Android Studio' 카테고리의 다른 글

[Android] Android Studio 단축키!!  (0) 2016.08.16
Posted by sungho88
,

먼저, 녹스 앱 플레이어를 설치한다.(설치는 간편하게 쉽다.)


홈페이지



그 다음에, 유니티에서(또는 안드로이드 스튜디오에서) 빌드한 APK를 실행해보자.

이전에는 APK파일을 그냥 드래그하면 설치가 되었지만, 이제는 그렇게 하지 알고 1단계 거쳐야 한다.

맥 기준으로 왼쪽 메뉴(윈도우는 하단? 우측?)에 apk 업로드하는 버튼이 있다.

이렇게 해서 파일을 선택하면 된다.





Posted by sungho88
,

뷰를 숨기거나, 보여주거나 해서 어떤 동적인 움직임을 더욱 표현할 수 있다.


버튼을 눌렀을 때, 토글이 이뤄진다거나...


1. VISIBLE

2. INVISIBLE

3. GONE


1번은 당연히 보여주는 것이므로 쓰든. 말든 숨김 동작을 하지 않을것이라면 안써도 된다.


2,3 번의 차이는 무엇인가?


테스트를 해봤다. 다음 이미지를 보면 한눈에 알 수 있다.

하단에 레이아웃을 잘 보도록 ...


1. VISIBLE

첫 번째 이미지는 텍스트뷰 HaHa가 출력되었다. 그냥 단지 보여주는 것이다.


2. INVISIBLE

두 번째 이미지는 1번 VISIBLE과 별 차이 없다. 하지만, 뷰는 안보이게 설정하여 보이지 않는다.

하지만, 1번과 마찮가지로 동일한 위치에 존재한다.


                                


3. GONE

세 번째 이미지는 2번 비슷하게 뷰가 사라져서 내용물을 보여주지 않는다.

또한, 자리를 차지하지 않고 아예 사라져버려 있는지 없는지 알 수 없다.

INVISIBLE과 차이점은 


INVISIBLE : 뷰는 감춰지지만, 해당 뷰의 위치는 차치하고 있는다.

GONE : 뷰도 감춰지고, 해당 뷰의 위치 역시 차지하지 않는다.



이상으로 VISIBLE과 INVISIBLE 그리고 GONE의 차이점을 알아봤다.


Bye~


Posted by sungho88
,

이클립스와 매우 다른 단축키때문에 조금 불편하다.

일단, 내가 알게 된 단축키를 여기에 정리해보려 한다.


Ctrl + Alt + L

코드 자동 정렬. 가장 많이 쓰는 것일듯...


Shift + F10

프로젝트 실행하는 단축키


Ctrl+Q

클래스/메소드 설명보기


Shift + / 

한 줄 주석


Ctrl + Shift + / 

블록 단위 주석 


Ctrl + Y

안드로이드 스튜디오에서는 한 줄 삭제


Ctrl + D 

한 줄 복사


Ctrl + F4

창 닫기(종료) Ctrl + W가 아니다.


Alt + 방향키 

메소드 단위로 커서 이동


Alt + Enter 

에러 또는 오류가 발생 시에 이 단축키를 누르면, 어떤 해결책을 할지를 제시해준다.


Ctrl + B 또는 Ctrl + 마우스 왼쪽 클릭

선언된 함수, 변수 등의 라인으로 커서를 이동해서 쉽게 파악할 수 있다.


Ctrl + Shift + Enter

private void star() 후 단축키 입력시, 자동으로 괄호 한 쌍이 생성됨.


Ctrl + p

메소드 작성 시, 괄호 안에서 입력하면, 그 메소드에서 받을 수 있는 매개변수들의 타입을 보여줌.

 

Ctrl + Shift + F 

프로젝트 단위로 문자열 검색하기


Logcat 띄우기

Alt + 6


아무이유 없이 안될때. : 무슨 에러인지 말 안 할때.

Build - Clean Project


Shift + F1 -> 안드로이드 공식 사이트 DOC 문서로 이동하여 해당 메소드,클래스 설명

'Android > Android Studio' 카테고리의 다른 글

안드로이드 스튜디오 새 프로젝트 만들기  (1) 2017.12.11
Posted by sungho88
,

안드로이드에서는 자바에서 제공하는 쓰레드 개념을 그대로 사용할 수 있다. 

다만, 안드로이드에서는 리소스가 컴퓨터에 비해 한정적이기 때문에 좀 더 철저하게 관리된다.


즉, 뷰에 관한 일처리는 메인쓰레드만이 담당하게 된다. UI 쓰레드라고도 부른다.

백그라운드 쓰레드(메인쓰레드 이외 쓰레드들을 총칭)에게 복잡하거나 비교적 시간이 걸리는 작업을 

임한 뒤, 결과값을 메인쓰레드로 다시 받아서 결국 마무리는 메인쓰레드가 하는 방식이라 할 수 있다.

 

이러한 작업을 쉽게 하기위해서 핸들러라는 개념도 있지만, AsyncTask라는 것을 사용해보고자 한다.


AsyncTask는 백그라운드 쓰레드와 UI 쓰레드(메인 스레드)를 같이 쓰게 쉽게 하기 위해 설계하였다. 

또한 메소드의 이름이 어떤 기능을 갖는 메소드인지를 명확하게 알 수 있어 핸들러보다 다루기 쉽다.


public class MommooAsyncTask extends AsyncTask<String,Void,String>


위와 같이 선언할 때, 제네릭 매개변수 3개를 정해야한다.


첫 번째 : doInBackground 메소드에서 선언하는 매개변수의 타입을 지정한다

두 번쨰 : onProgressUpdate 메소드에서 선언하는 매개변수의 타입을 지정한다

세 번째 : onPostExecute 메소드에서 선언하는 매개변수의 타입을 지정한다


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

import android.os.AsyncTask;


public class AsyncTaskExam extends AsyncTask<String,Void,String>{


    public String result;


    @Override

    protected void onPreExecute() {

        super.onPreExecute();

    }


    @Override

    protected String doInBackground(String... params) {

        return result;

    }


    @Override

    protected void onProgressUpdate(Void... values) {

        super.onProgressUpdate(values);

    }


    @Override

    protected void onPostExecute(String s) {

        super.onPostExecute(s);

    }

}


mmmmmmmmmmmmmmmmmmmmmmmmmmmmm

@Override

    protected void onPreExecute() {

        super.onPreExecute();

    }

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


가장 먼저 나오는 메소드인 onPreExecute() 메소드는 doInBackground() 메소드..

즉, background스레드를 실행하기 전 준비를 하는 메소드이다.

변수를 초기화하거나 프로그레스 바 생성, 네트워크 통신 전 환경 세팅등을 여기서 진행한다.


 @Override

    protected String doInBackground(String... params) {

        return result;

    }


두 번째 나오는 이 메소드가 핵심이다.

이 메소드 background 스레드로 작업을 수행하는 부분이다.

네트워크 접속이나 DB 접속 등 비교적 시간 소요가 큰 일처리를 이 메소드에 작성한다.

background 스레드이므로 메인쓰레드의 작업과는 상관없이 별개로 독립적으로 수행을 한다.

따라서 AsyncTask는 비동기적으로 작동한다고 할 수 있다.


만약, 메인쓰레드가 이 작업을 한다면?

버튼을 클릭했을 때, 서버에 접속해서 이미지를 갖고 오는 앱이 있다고 가정해보자.

 AsyncTask를 쓰면, 버튼을 눌렀다 떼면 이미지를 갖고 오는 동안 잠실 기다려달라는 텍스트를 보여준다거나, 다른 화면을 보여준다거나, 프로그래스바를 돌리는 작업을 할 수 있다.


하지만, 메인쓰레드에서 이 작업을 수행하면 버튼을 누른 그 상태 그대로 멈춰버리며

서버에서 이미지를 가져오는 작업이 완료될때까지 유저는 아무런 액션도 할 수 없다.

또한 최근 버전에서는 그러한 상태를 방지하기 위해 아예 에러를 출력하며 앱을 강제 종료시키므로 선택이 아닌 필수이다.


@Override

    protected void onProgressUpdate(Void... values) {

        super.onProgressUpdate(values);

    }


세 번째 메소드는 doInBackground 메소드 동작 시 중간중간 메인쓰레드에게 일을 맡겨야 할때 사용한다. 위 예제의 경우 매개변수가 Void이므로 호출한 쪽에서는 ()으로 그냥 호출한다.

즉, onProgressUpdate()메소드를 호출하면 백그라운드 쓰레드 중간에 메인쓰레드에게 일을 시킬 수 있다.


@Override

    protected void onPostExecute(String s) {

        super.onPostExecute(s);

    }


마지막 메소드는 Bckground 쓰레드(doInBackground())가 일을 끝마치고 리턴값으로 result를 넘겨준것을 매개변수로 받는다. 그 값을 갖고 메인 쓰레드에게 일처리를 시킬때 사용하는 메소드이다. 


정리하면, 

doInBackground()메소드는 메인 쓰레드가 아닌 백그라운드 쓰레드이며,

나머지 메소드들은 백그라운드 쓰레드가 아니라 메인 쓰레드에서 동작한다.


(추후에 상시 업데이트 예정)


Posted by sungho88
,

뷰를 숨기거나, 보여주거나 해서 어떤 동적인 움직임을 더욱 표현할 수 있다.


버튼을 눌렀을 때, 토글이 이뤄진다거나...


1. VISIBLE

2. INVISIBLE

3. GONE


1번은 당연히 보여주는 것이므로 쓰든. 말든 숨김 동작을 하지 않을것이라면 안써도 된다.


2,3 번의 차이는 무엇인가?


테스트를 해봤다. 다음 이미지를 보면 한눈에 알 수 있다.

하단에 레이아웃을 잘 보도록 ...


1. VISIBLE

첫 번째 이미지는 텍스트뷰 HaHa가 출력되었다. 그냥 단지 보여주는 것이다.


2. INVISIBLE

두 번째 이미지는 1번 VISIBLE과 별 차이 없다. 하지만, 뷰는 안보이게 설정하여 보이지 않는다.

하지만, 1번과 마찮가지로 동일한 위치에 존재한다.


                                


3. GONE

세 번째 이미지는 2번 비슷하게 뷰가 사라져서 내용물을 보여주지 않는다.

또한, 자리를 차지하지 않고 아예 사라져버려 있는지 없는지 알 수 없다.

INVISIBLE과 차이점은 


INVISIBLE : 뷰는 감춰지지만, 해당 뷰의 위치는 차치하고 있는다.

GONE : 뷰도 감춰지고, 해당 뷰의 위치 역시 차지하지 않는다.



이상으로 VISIBLE과 INVISIBLE 그리고 GONE의 차이점을 알아봤다.


Bye~


Posted by sungho88
,

안드로이드는 폰의 보안 설정을 다양하게 해주어야한다.

그 스마트폰에 접근권한을 준다고 해야할까?

카메라 기능을 앱dp서 사용해야 한다면 CAMERA 퍼미션을 추가해주어야한다.

인터넷 권한의 획득없이, 인터넷을 사용할 수 없으며, 

연락처를 읽는 권한없이, 디바이스의 연락처를 읽어올 수 없다. 

전화걸기 권한없이 전화를 걸 수 없고, SMS권한없이 SMS를 다룰수 없습니다.



try catch를 잘 쓰면, 이렇게 에러가 정확히 출력할 수 있다.

뭐가 문제인지 알려줄뿐만 아니라 심지어 제안까지 해준다. 굿.

그럼 안드로이드 매니페스트에 들어가서 유저-퍼미션을 추가해주면 된다.

여태까지 2개,3개의 블로그&메모장에 저장해놨던 것을 이 블로그로 모두 강제이주시키려고 한다.



<카메라 퍼미션>


<uses-permission />

카메라를 사용하기 위해서는 물리적인 하드웨어를 사용하는 것이므로 반드시, 

카메라를 사용하겠다고 안드로이드 메니페스트에 퍼미션 등록을 해주어야 사용이 가능하다.


<uses-feature />

또한 등록한 퍼미션 외에도 <uses-feature> 엘리먼트는 카메라 하드웨어와 오토 포커스 기능을 

사용한다는 것을 미리 퍼미션에 알려 해당 기능이 없는 장비에 앱이 설치되는 것을 방지하기 위해 

사용된다. 


 

<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />

<uses-feature android:name="android.hardware.camera.autofocus" />


이렇게 쓰면  카메라를 사용하겠다고 퍼미션 등록을 하였으며, 





안드로이드 스튜디오에서 매니페스트 위치




Android 메뉴로 들어가서 - app - manifests - AndroidManifest.xml로 접속하면된다.



<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

이 두 개는 그냥 세트로 써주면된다.

인터넷을 연결하라는 퍼미션이고, 네트워크 상태를 체크하는 퍼미션이기 때문이다.

이렇게 하면 인터넷에 연결되는 퍼미션은 완료되었다.


Posted by sungho88
,

처음 에뮬레이터를 돌리면, 영어만 되고 한글 입력이 되질 않는다.

Language에서 바꿀 수 있을것이라 생각을 했지만, 환경은 바꿀 수 있으나 키보드는 못 바꾼다.


한글 키보드를 따로 설치를 해주어야한다.


hangulkeyboard.apk


이것을 다운받아서 자신이 설치한 sdk 폴더 내에 platform-tools에 집어넣는다.


어딨는지 못찾겠으면 C드라이브에서 Ctrl + F를 눌러서 검색하는 방법이 있다.

(환경에 따라 다른데 설치했을수도..)


그 다음에 cmd를 실행한다.

그 다음에 platform-tools폴더로 이동한다(cd ..)

그 다음에 adb install hangulkeyboard.apk를 입력해서 설치한다.


success 어쩌고가 나오면 성공!


그 다음에 다시 AVD로 돌아와서...

설정에서 키보드를 누르면 한글.이 추가된 것을 볼 수 있다.

한글을 설정하면 완료!

한글을 사용할 수 있게 됨

Posted by sungho88
,