안드로이드에서 Bitmap 객체를 이용해 화면에 이미지를 나타낼 수 있다. 그리고 비트맵에는 그래픽을 그릴 수도 있다. Bitmap을 사용할 때 더블버퍼링(새로운 비트맵을 만들고 비트맵에 그래픽이나 이미지를 다 그려놓은 다음 완성된 Bitmap을 마지막에 canvas에 그리고 뷰가 다시 그려져야 할 때 기존의 Bitmap을 화면에 표시하는 기법)방식을 사용한다. Bitmap은 다음과 같이 createBitmap(...)메서드를 이용해 생성하고 Canvas에 셋팅한다.123Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas();canvas.setBitmap(bitmap);Co..
기본적인 그래픽을 그리는 방법은 View를 상속하는 클래스를 만들고 Paint, Canvas객체를 이용하면 된다. View를 상속하는 클래스 A를 만든다.A의 생성자에서 Paint객체를 가지고 그리기 관련 설정을 한다.A에서 onDraw(Canvas canvas)메서드를 오버라이딩하고, 파라미터인 canvas를 이용해 drawRect, drawCircle, drawText, drawLine 메서드를 이용하여 각각 사각형, 원, 텍스트, 선을 그린다. 다음은 액티비티 화면에 두 개의 그래픽(하나는 선, 하나는 면)을 그리는 테스트 코드다. + View클래스를 상속하는 클래스 작성 (여기에서 Paint와 Canvas를 이용하여 그래픽을 그린다.) 1234567891011121314151617181920212..
안드로이드에서는 보안 때문에 일반적 RDBMS(MySQL, MSSQL 등)를 사용하지 못한다고 한다.그래서 AsyncTask객체의 doInBackground메서드를 이용해서 이 구현부에서 HttpURLConnection객체를 이용해 로컬서버나 실서버와 통신하고 결과를 json형태로 가져와 파싱하는 과정을 거치는 프로그램을 짜야 한다. 다음은 로컬서버와 통신하기 위한 테스트 코드이다. +서블릿 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667@WebServlet("/CommonJdbc")public class CommonJdbc ..
리스트뷰는 말 그대로 view를 리스트의 형태로 보여주는 것을 얘기한다. 리스트뷰는 여러 리스트 목록 중에 하나의 목록을 선택 가능하다. 그래서 '선택 위젯'이라고 한다. '선택 위젯'에는 리스트, 스피너, 그리드, 갤러리 등이 있다. 리스트뷰를 만들기 위해서는 다음과 같은 절차를 따라야 한다.1. 리스트 뷰의 목록이 될 하나의 디자인 레이아웃 xml을 만든다. 그리고 이것을 액티비티에 인플레이션 하는 자바 코드를 작성한다.2. 하나의 리스트뷰 목록에 들어갈 정보를 클래스로 정의한다.3. 리스트뷰에 필요한 뷰를 가져오는 어댑터를 확장한 클래스를 만든다.4. 메인 액티비티에서 정보를 가져와서 setAdapter메서드를 이용해 3번의 어댑터 확장 클래스를 설정한다. list_view.xml리스트뷰 하나하나의..
키패드 기능은 InputMethodManager객체를 이용해서 다룰 수 있다. EditText에 포커스를 하면 자동으로 키패드가 뜨는데 inputType이라는 속성 값을 부여함으로써 다른 모드의 키패드를 불러 올 수있다. 다음은 inputType의 대표적 속성이다.inputType 속성값 설 명 number 숫자 numberSigned 0보다 큰 숫자 numberDecimal 정수 text 일반 텍스트 textPassword 패스워드 표시 textEmalAddress 이메일 표시 phone 전화번호 표시 time 시간 date 날짜 layout.xml12345678910111213141516171819202122232425262728293031 Colored by Color Scriptercs activ..
+메이븐 설정1234567891011121314151617 org.springframework spring-websocket ${org.springframework-version} org.springframework spring-messaging ${org.springframework-version} com.fasterxml.jackson.core jackson-databind 2.2.3Colored by Color Scriptercs +웹소켓 요청에 대한 핸들러 작성12345678910111213141516171819202122232425262728293031323334353637383940414243@Componentpublic class ContentHandler extends TextWebSock..
@MVC는 애노테이션 기반의 컨트롤러 기술이다.@MVC 이전의 컨트롤러는 타입을 비교해서 컨트롤러를 선택하고, 그 타입의 구현된 메서드를 호출하는 방법을 사용했다면, @MVC는 @RequestMapping을 이용해서 컨트롤러 클래스나 메서드를 선택하여 호출하는 방법을 사용한다. 이것을 사용하기 위해서는 DefaultAnnotationHandlerMapping을 사용해야 했지만 스프링 3.2부터 deprecated되었고, RequestMappingHandlerMapping가 대신한다. RequestMappingHandlerMapping는 기본적으로 등록되는 빈이라 등록해줄 필요가 없지만 만약 다른 핸들러 매핑 빈을 사용하고 있다면 수동으로 서블릿 컨테이너에 이 빈을 등록해줘야 사용할 수 있다. @Reque..
컨트롤러 스프링에서는 컨트롤러의 유연한 개발을 위해 컨트롤러가 될 수 있는 대상에 대해 제한을 두고 있지 않는다. 스프링은 사용자의 모든 요청이 DispatcherServlet(web.xml에 서블릿으로 정의되어 있음)을 거친다. 직접 컨트롤러 클래스를 작성하기 위해서는 스프링 MVC가 지원하는 컨트롤러를 구현해야 하고 DispatcherServlet에 연결해주는 컨트롤러 어댑터가 필요하다. Servlet, SimpleServletHandlerAdapter이 컨트롤러와 컨트롤러 어댑터는 기존 표준 서블릿(HttpSErvlet을 상속받아 정의하는 서블릿) 클래스 코드를 그대로 유지하면서 사용할 수 있도록한다. HttpRequestHandler, HttpRequestHandlerAdapter이 컨트롤러와 어..
초기화 메서드는 빈 객체가 생성되고 의존관계 주입이 끝난 시점에 실행되는 메서드를 말한다. 생성자에서 초기화 작업을 해도 되지만 빈에서 주입받는 모든 의존관계 변수나 프로퍼티의 DI 작업이 끝난 시점 이후에 초기화를 해야 될 때 초기화 메서드를 사용한다. 초기화 메서드를 지정하는 방법 init-method속성을 xml에 빈 선언시에 지정@PostConstruct init-method속성을 xml 빈 선언시 지정1cs빈 정의시에 init-method 속성에 DI작업이 끝난 이후에 호출될 메서드를 선언해준다. 123456789101112131415161718@Controllerpublic class TestTwoController { CarInfoProvider car; @Resource(name="kiaC..
스프링은 싱글톤(singgleton), 프로토타입(prototype), 요청(request), 세션(session), 글로벌세션(globalSession), 애플리케이션(application) 스코프를 기본적으로 제공 스프링에서 별도의 설정 없이 등록한 빈은 모두 싱글톤 빈이다. 요청 스코프 빈이 빈은 하나의 사용자 웹 요청 안에서 만들어지고 요청이 끝나면 제거된다.각 요청별로 독립적인 빈이 만들어지기 때문에 빈 객체 내에 상태유지 값을 저장해 두어도 안전하다.동시에 많은 요청이 있더라도 각각 별도의 요청 스코프 빈이 만들어지기 때문에 안전하다. +리퀘스트 스코프 빈 모델 객체123456789101112131415@Component@Scope("request")public class RequestScop..
기본적으로 스프링에서 빈을 등록하면 싱글톤으로 만들어진다. 애플리케이션 컨텍스트 마다 빈은 한개씩만 만들어진다는 얘기다.사용자의 요청이 있을 때마다 매번 관련 있는 빈을 새로 생성하는 것은 비효율적이기 때문이다. 싱글톤 빈은 의존성 주입(DI)을 하든지 ApplicationContext를 이용해서 빈을 불어와도 매번 같은 객체를 반환한다. 그런데 때로는 빈을 싱글톤이 아닌 하나의 빈으로 여러개의 객체를 만들어 사용해야 할 때가 있다.그럴 때 프로토 타입 빈을 사용하는데 프로토타입 빈은 컨테이너에게 빈을 요청할 때마다 매번 새로운 객체를 생성하여 반환해준다. 싱글톤빈은 다음과 같이 애노테이션으로 설정할 수 있다.12345678910111213@Component@Scope("prototype")public ..
XML에서 빈을 등록했다면 생성자나 자바빈 규약에 따른 수정자(set으로 시작하는 메서드)에 의존관계 빈이나 값을 주입할 수 있다. 1234567891011public class InjectionTest { public InjectionTest(String name, int age, String s) { System.out.println(name + "======" + age + "=========" + s.toString()); } public void setParameterSetting(String a) { System.out.println(a); } }Colored by Color Scriptercs 123456789 Colored by Color Scriptercs스프링 컨텍스트 XML설정 파일에..
스프링에선 객체의 생성과 사용 및 제거 등의 작업을 애플리케이션 소스코드 대신 독립된 컨테이너가 담당한다. 이것을 IoC(제어역전)라고 부르며, 스프링 컨테이너를 IoC컨테이너라고 부른다. IoC컨테이너의 기본적인 역할코드를 대신해서 애플리케이션을 구현하는 오브젝트를 생성하고 관리하는 것 xml문서, 자바코드, 애노테이션 같은 리소스를 통해서 BeanDefinition 인터페이스 타입으로 변환되어져 이 타입을 IoC컨테이너가 활용한다.BeanDefinition에는 bean하나를 만드는데 필요한 여러 가지 정보가 들어있다. bean 등록 방법은 빈에 필요한 메타정보를 작성해서 컨테이너에 설정하면 된다.가장 직접적인 방법은 BeanDefinition타입의 인터페이스를 구현하는 클래스를 직접 생성하는 것이다...
탭을 사용하면 한 화면에서 서로 다른 두가지 화면의 정보를 전환하면서 보여줄 수 있다. 먼저 com.android.support.design라이브러리를 추가한다. File탭 - project structure - app - dependencies에서 (+)추가 버튼을 누른다. 그리고 Library dependency선택 후 해당 라이브러리를 추가한다. 메인 xml파일을 작성한다.12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 Colored by Color Scriptercs 탭을 사용하는 것은 한 액티비비에서 화면이 전..
상태를 표시해주는 Seekbar는 ProgressBar를 확장한 것이다. ProgressBar의 속성을 가지고 있으면서도 사용자가 이 SeekBar의 값을 조절할 수 있도록 하고 있다. 주로 볼륨 조절이나, 동영상 재생 시에 재생 위치 조절을 위해 사용된다. SeekBar클래스의 setOnSeekBarChangeListener메서드를 통해 SeekBar.OnSeekBarChangeListener를 구현한 클래스를 메서드의 인자로 등록해서 SeekBar의 상태가 바뀔 때마다 호출되도록 할 수 있는 기능을 작성할 수 있다. 액티비티 codepublic class MainActivity extends AppCompatActivity { SeekBar bar; @Override protected void onC..