스피너는 HTML selector와 비슷한 기능으로 콤보 박스 안에 데이터를 하나 선택할 수 있도록 하는 위젯이다. 레이아웃 파일에 spinner 태그를 추가하여 간단하게 사용할 수 있다. ◎activity_main.xml ◎MainActivity.java package com.example.samplespinner; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import and..
일반적인 뷰 객체가 아닌 여러 개의 아이템 중에 하나를 선택할 수 있는 리스트 모양의 위젯을 안드로이드에서는 선택 위젯이라고 부르며 일반 위젯과는 구별하여 사용한다. 선택 위젯이 어댑터 패턴을 통해서 데이터를 관리하기 때문인데, 이 어댑터 패턴은 원본 데이터를 뷰에 직접 설정하지 않고 어댑터 클래스를 사용하여 선택 위젯에 보이는 각 아이템이 화면에 표시되기 전에 어댑터의 getView() 메서드를 호출하여 아이템을 반환받아 뷰에 표시하는 특징이 있다. 리사이클러 뷰는 각각의 아이템이 화면에 보일 때 메모리를 효율적으로 사용하도록 캐시를 구현하고 있기 때문에 일반적인 리스트뷰 보다 사용이 권장된다. 바로 한번 확인해보자. 우선, activity_main 레이아웃 내부에 리사이클러 뷰를 구성한다. ◎acit..
직전 포스팅에서 커스텀 버튼 객체를 만들고 이를 레이아웃에 넣어보는 예제를 했다. 버튼과 마찬가지로 레이아웃도 뷰 객체이기 때문에 레이아웃으로 구성된 위젯 객체를 직접 만들 수 있다. 또한 카드뷰를 사용하여 내부 레이아웃의 디자인이 좀 더 둥글고 심플하게 변경할 수 있다. 바로 한번 확인해보자. 우선, layout1.xml 파일을 생성하여 다음과 같이 카드뷰를 삽입하고 그 내부에 레이아웃과 이미지 뷰 & 텍스트뷰를 넣어 구성해준다. ◎layout1.xml 이후에 LinearLayout을 상속 받은 Layout1.class 객체를 생성하고, layout1 레이아웃을 inflate 한다. 해당 객체가 생성됐을 때, 이미지와 텍스트를 set할 수 있도록 생성자를 구성한다. ◎Layout1.java packag..
안드로이드 API에서 제공하는 위젯을 사용하면 거의 대부분의 화면을 만들 수 있다. 하지만, 우리가 원하는 기능만 가진 커스텀 위젯을 따로 구상하여 새로운 뷰를 정의하는 것 또한 가능하다. API에서 제공하는 뷰를 사용하려면 API의 뷰를 상속해야 한다. 이 때 뷰의 영역과 크기는 해당 뷰를 포함하고 있는 레이아웃의 영향을 받아 정해지며, 개발자가 뷰의 상태에 따라 추가적인 코드를 넣을 수 있도록 콜백 메서드가 호출된다. 뷰가 스스로의 크기를 정할 때 자동으로 호출되는 메서드는 onMeasure()이고 스스로를 레이아웃에 맞게 그릴 때는 onDraw() 가 호출된다. 일반적으로 사용하는 뷰 객체의 콜백 메서드는 다음과 같다. public void onMeasure(int widthMeasureSpec, ..
직전 안드로이드 포스팅에서 브로드 캐스트 메시지를 다루며 SMS 데이터를 가져오는 위험 권한을 잠깐 다뤘었다. 이번 포스팅은 위험 권한이라는 개념을 좀 더 파고들어보고, 위험 권한을 어떻게 사용자가 허용/거부하게 하는 지 그 방법을 2가지 알아볼 것이다. 우선 안드로이드에서 권한은 일반 권한과 위험 권한으로 나눌 수 있는데, 일반 권한은 앱을 설치할 때, 사용자에게 해당 권한이 부여된다는 사실을 알려주고 설치할 것인지를 물어본다. 그러나 위험 권한은 앱이 실행 시에 사용자에게 해당 권한을 사용할 것인지를 물어본다. 위험 권한으로 분류된 권한들은 대부분 개인정보가 담겨있는 정보에 접근하거나 개인정보를 만들어낼 수 있은 단말의 주요 장치에 접근할 때 부여되며, 다음과 같다. 허가 그룹 권한 CALENDAR ..
스프링 기반의 패킷캡쳐 앱을 toy project 삼아 만드려고 한다. 괜찮은 pCap 라이브러리가 어떤 것이 있나 좀 찾아봤는데, 처음에는 pCap4j를 사용하려고 했으나 튜토리얼이 너무 적은 거 같이 jNetPcap으로 우선 적응해보려 한다. jNetPcap 라이브러리를 적용하는게 생각보다 까다로워서... 조금 헤매긴 했는데, 방법을 정리하자면 다음과 같다. 우선 windows 환경에서 jNetPcap을 사용하려면, WinPcap을 먼저 설치해줘야 한다. 아래 링크로 접속하여 exe 파일을 받아 실행해주자. https://www.winpcap.org/install/default.htm WinPcap · Download WinPcap Has Ceased Development. We recommend N..
안드로이드에서 브로드캐스팅이란 메시지를 여러 객체에 전달하는 것을 말하며, 글로벌 이벤트라고 부른다. 예시로, '전화가 왔습니다.' 혹은 '문자 메시지가 도착했습니다.' 를 들 수 있다. 우리가 제작한 어플이 다른 어플에서 온 브로드 캐스트 메시지를 받고 싶다면, 브로드캐스트 수신자를 만들어 앱에 등록해야한다. 브로드캐스트 수신자 또한 서비스와 마찬가지로 앱 구성요소이기 때문에 매니페스트 파일에 등록해야 시스템이 알 수 있고 화면도 없게 된다. 그러나 브로드캐스트 수신자는 매니페스트 등록 방식이 아닌 소스 코드에서 registerReceiver() 메서드를 이용하여 등록할 수도 있다. 바로 예제를 한번 구성해보자. 이후 AndroidManifest.xml 파일에 receiver 태그가 자동으로 생성되는데..
어제부터 진짜 미치고 팔짝 뛰는 에러가 진짜 평화롭던 날에 갑자기 튀어 나가서 마우스를 내리친게 몇 번인지 모르겠다. 에러는 [com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException] 인데, 그냥 gralde프로젝트 빌드 시 아래 빨간 줄의 exploded war이 생성되는 경로를 톰캣이 못 찾아서 생기는 에러이다. 여기까지는 오케이, 그럼 생성을 하자! 하고 빌드를 다시 때렸는데 무슨 짓을 해도 그냥 war은 생성이 되는데 exploded 가 생성이 되질 않는다. gradle clean만 수십번, 프로젝트 재생성만 10번은 한 것 같다. 찾아보니, 인텔리제이 settings - Build,..
Service는 화면 없이 백그라운드에서 동작하며, 어플이 실행하고 있지 않은 상황에서도 주기적으로 데이터를 읽거나 쓰기 위해서 사용한다. 서비스는 액티비티와 함께 안드로이드 4대 구성요소 중 하나이기 때문에 새로 만든 서비스도 마찬가지로 매니페스트 파일에 등록해야 사용할 수 있다. 서비스는 실행된 상태를 계속 유지하기 위하여 서비스가 비정상적으로 종료되더라도 시스템이 자동으로 재실행된다. startService 메서드를 사용하여 액티비티에서 서비스를 실행시킬 수 있으며, 데이터를 주고 받기 위해 Intent 객체를 서비스에 전달한다. 또한 startService는 서비스가 이미 실행이 되고 있더라도 여러 번 호출이 가능하며 서비스는 그대로 메모리에 만들어진 상태로 유지된다. 때문에 startServic..
직전 포스팅인 Navigation Drawer 을 다루면서 생성한 Fragment 객체는 이전에 봤던 Fragment객체의 형태와 많이 달라있었다. 이전처름 Fragment객체를 생성한 뒤, Fragment클래스를 상속받아서 inflate해주는 코드 한 줄만 구성한 것이 아닌, 아래와 같이 ViewModel 객체를 상속 받은 FragmentModelView클래스를 Fragment 클래스와 함께 생성하였다. ◎SlideshowViewModel.java package com.example.callenge.ui.slideshow; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecy..
- AsyncStorage
- await
- redux-thunk
- javascript
- redux
- Promise
- 인천 구월동 맛집
- 맛집
- 인천 구월동 이탈리안 맛집
- 정보보안기사 #실기 #정리
- react-native
- 이탈리안 레스토랑
- Async
- react
- 파니노구스토
- Total
- Today
- Yesterday