솜이의 데브로그

안드로이드 스튜디오 실습 #5~#9 본문

Security/이프로_Phishing Fishing

안드로이드 스튜디오 실습 #5~#9

somsoming 2021. 5. 10. 16:13

영상 출처는 여기

 

#5 패키지 구조 & 역할

 

AndroidManifest 의 기본 화면

application : 기본 앱 설정들을 세팅할 수 있다.android:icon 을 통해 앱 아이콘을 변경할 수 있다.label 항목을 ctrl + click 해서 이동해 만드는 어플의 이름을 설정 가능하다.roundIcon : 아이콘의 테두리를 둥글게 하는 기능.theme : style tab에서 앱 테마를 선택 가능하다. (주로 색상 선택)activity 추가할 때 마다 manifest 에 선언해야한다. (SubActivity가 들어가있음을 확인 가능)Launcher : 앱을 실행했을 때 처음으로 시작되는 activity를 지정. 위의 코드에서는 main activity가 먼저 실행됨을 확인 할 수 있다.

 

res (resource folder) - drawable : 이미지를 모으는 폴더. - layout : layout 파일들을 모아놓는 폴더. activity 와 연결하는 layout 파일들을 모아둔다.

 

mipmap - dpi : 해상도 단위 핸드폰 해상도에 맞춰 dpi 맞춘 이미지들을 분류해야한다.

 

values - colors.xml : 원하는 컬러를 지정할 수 있다. - strings.xml : 다른 xml 에서 @string/원하는string이름 을 입력해 사용할 수 있다. 길거나 공통적으로 쓰이는 string을 저장. - styles.xml : 원하는 앱 테마 등을 커스텀.

 

 

 

#6강 ListView

 

activity_main.xml에 ListView 추가.

 

MainActivity.java

ListView 변수 선언하고, xml의 list와 연결한다.

데이터를 저장하기 위해 list 라는 자료형을 String 형태로 넣는다고 선언.

ListView와 List를 연결하기 위해 어댑터 선언. ArrayAdapter 이용하여 인자 전달. (중간다리 역할)

 

넣을 데이터를 추가하고 마지막으로 .notifyDataSetChanged() 함수를 이용해 바뀐 상태를 저장한다.

 

실행결과

 

 

 

#7강 Navigation Menu

 

스크롤 시 나오는 메뉴 바 만들기

 

프로젝트를 새로 만들 때 Navigation Drawer Activity 템플릿을 선택하여 진행한다.

 

onCreate : 앱을 시작했을 때 실행FloatingActionButton : 버튼을 띄우는 아이콘 관리.위의 코드에서는 fab이라는 변수 선언해서 클릭했을 때 snack bar 메세지가 나오도록 구현함. 밑에서 위로 Replace with your own action 이라고 뜰 것이다.snack bar : toast 와 비슷한 기능인데 좀 더 업그레이드 된 기능.

 

DrawerLayout : list 형태의 메뉴를 꺼낼 때 인자로 받은 레이아웃 연결.

 

(drawer_layout 부분을 ctrl+click 해서 activity_main.xml 파일로 이동.)영역 안에 내용을 include 한다. 투명한 상태의 뷰를 올리고 실제 들어갈 네비게이션 뷰를 올린다. (뷰가 2개)

 

onBackPressed() : 안드로이드 폰에서 물리적, 가상적으로 있는 뒤로가기 버튼을 누르면 일어나는 action 정의.onCreateOptionsMenu() : 시작 할 때 옵션 메뉴. 미리 만들어놓은 템플릿을 가지고 오는 형태.onOptionsItemSelected() : 위에서 생성한 옵션메뉴를 클릭 했을 때 (선택했을 때) 실행

 

MainActivity에서 각각 눌렀을 때 실행할 코드 구현.

 

 

#8강 SharedPreferences

 

임시로 저장한 값들을 남겨둘 때 사용

 

 

xml에서 edittext 하나 만든다.

 

EditText 변수와 String 변수 하나씩 선언. SharedPreferences 인스턴스를 선언해 인자로 string과 모드를 입력한다.앱을 실행했을 때 EditText에 안드로이드 키보드를 이용해 입력하고 종료했을 시에도 sharedpreference 저장하도록한다.

 

Ctrl+O 입력해 함수 검색onDestroy 함수 : 앱을 종료했을 때 (정확히는 액티비티를 벗어났을 때) 호출.

SharedPreferences.Editor 이용해 저장

et_save에 저장 되어 있는 값을 받아오는 것이 getText() 함수.

editor에 받아온 값 저장. 첫번째 인자의 이름으로 value 값을 저장한다.

 

결론적으로, onDestory() 에선 종료 시 et_save에 있는 값을 hi 라는 이름으로 저장하고, onCreate()에선 앱 실행 시 저장되어 있던 hi라는 값을 받아와 et_save에 띄운다.

왼쪽은 입력한 화면, 오른쪽은 왼쪽에서 뒤로 나갔다가 앱을 다시 실행 시킨 화면이다.

입력했던 텍스트가 그대로 나타나는 것을 확인할 수 있다.

 

shared preference는 설정값 저장하는 데 많이 사용될 수 있다. 다만 앱을 삭제하면 사라지므로 '임시저장' 의 역할을 한다.

 

 

#9강 WebView

 

안드로이드 화면에서 원하는 인터넷 주소 등을 띄우는 기능.

 

xml에서 webview 생성

 

 

WebView, String 변수 선언. String은 웹 뷰를 어떤 주소로 틀 지 지정하기 위해 필요하다. (url).getSettings().setJavaScriptEnabled(true) 함수를 통해 자바 스크립트 옵션을 허용한다.loadUrl() : 인자로 받은 url을 실행하는 함수.setWebChromeClient(), setWebViewClient() : 웹뷰가 chorme에서 돌아가도록 하기 위한 설정

 

 

앱에서 뒤로가기를 눌렀을 때 정상적으로 동작하기 위해 함수를 더 작성한다.onKeyDown() : 안드로이드의 키들을 입력을 했을 때 어떤 동작을 하도록 지정하는 함수.

 

key code가 KEYCODE_BACK (뒤로가기 버튼) 이고, 웹 뷰가 뒤로 갈 수 있는 상황일 때 뒤로 가도록 구현.

 

 

WebViewClientClass 내에 shouldOverrideUrlLoading 메소드 오버라이딩 : 현재 페이지의 url을 읽어온다. 새 창을 읽거나 특정 페이지에서 특수한 기능을 넣을 수 있다.

 

마지막으로 AndroidManifest.xml 에서 인터넷 권한을 허용해줘야 한다.<uses-permission> 에서 인터넷 권한을 허용.

 

실행 결과. (url을 naver 창으로 입력했으므로 네이버 창이 뜬다.)