..... ..... 스크롤뷰 안에 리스트뷰를 위치하면 화면에 보이지 않는다.ListView의 속성인 android:layout_height="wrap_content"를 하면 하나의 아이템만 보이고, android:layout_height="match_parent"를 하면 아예 보이지 않는다. 본인은 인터넷을 돌아다니다 보면 여러가지 방법이 나오는데 그 중에서리스트뷰의 높이를 재설정해서 다시 그려주는 방법으로 해결했다. 123456789101112131415161718public void setListViewSize(ListView myListView) { ListAdapter myListAdapter = myListView.getAdapter(); if (myListAdapter == null) { r..
안드로에드에서 startActivity(Intent type)를 통해 액티비티를 전환하게 되면, 깜빡임과 함께 다른 액티비티로 전환된다. 하지만 액티비티를 전환할 때 애니메이션 효과를 주면 깜빡임 효과없이 액티비티가 개발자가 원하는 방향에서 나타날 수 있게 할 수 있다. 방법은 Activity클래스에서 overridePendingTransition(int showAnim, int hideAnim) 메서드를 호출하면 된다.12345678910//overridePendingTransition(int showAnim, int hideAnim); //다른 액티비티 호출 시startActivity(intent);overridePendingTransition(R.anim.rightin_activity,R.anim...
여기에서 정리하는 것을 요약해서 말하자면 별도의 Thread를 생성하고 사용 할 경우, 그 안에서는 UI 관련 객체(Button, TextView 등)에 대해서는 변경을 가할 수 없기 때문에 이를 해결 할 수 있는 방법을 정리하는 것이다. Thread 사용시 Handler의 필요성 안드로이드 어플리케이션이 실행되면 안드로이드에선 UI의 처리를 위해 사용되는 기본 쓰레드를 생성하는데 이것을 '메인쓰레드'라고 한다. 그런데 어떤 작업을 백그라운드로 실행 시키면서 그 작업의 상황을 중간중간 보고 받을 필요가 있는데, 백그라운드를 만드는 작업은 새로운 Thread를 만들어서 할 수 있다. 이를테면 의 진행상황을 TextView에서 표현할 상황이 생길 수 있다.새로운 Thread를 이용하여 ProgressBar의..
안드로이드에서 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..
탭을 사용하면 한 화면에서 서로 다른 두가지 화면의 정보를 전환하면서 보여줄 수 있다. 먼저 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..
웹뷰는 안드로이드 애플리케이션 안에서 웹브라우저를 띄울 수 있는 방법을 제공한다. xml레이아웃에서 엘리먼트로 정의한다. 웹뷰를 정의하여 사용할 때는 androidManifest.xml파일에 인터넷 접속 권한을 등록해야 한다. 웹뷰의 설정정보는 액티비티에서 getSettings()메서드를 이용해서 여러가지 설정을 할 수 있다. 그리고 이 getSettings()로 가져온 WebSettings 타입에는 setJavascriptEnabled(boolean b)라는 메서드가 존재하는데 자바스크립트를 허용 할 것인가를 지정하는 것으로 대부분의 웹사이트가 자바스크립트를 사용하니 이것은 항상 true로 설정해야 한다. 다음은 간단한 웹뷰 예제 코드이다. 에딧텍스트에서 주소를 입력하고 버튼을 터치하면 웹뷰영역에서 웹..
몇몇 기기 구성은 프로그램 실행 중에 변경될 수 있다. (예: 화면 방향 전환, 키보드 가용성 및 언어 변경)이러한 변경이 일어나는 경우 안드로이드는 액티비티를 다시 실행시키게 된다. 쉡게 말하면 수명주기 중에서 destroy가 호출되고 다시 실행되면서 onCreate를 다시 호출하는 것이다. 이 같은 상황을 '특정 구성에 대한 변경'이라 칭하고 정리하겠다. 안드로이드는 특정 구성 변경에 대해 직접 처리 할 수 있는 선택지로 configchanges라는 activity의 속성을 제공한다. 그러나 configchanges의 사용은 시스템이 리소스의 재구성을 도와주지 않기 때문에 특정 구성 변경으로 인한 재시작을 반드시 피해야 하는 경우가 아니라면 사용하지 않는 것이 좋다. configchanges는 and..
selector라는 엘리먼트를 사용하면 뷰를 선택했을 때와 안했을 때의 색상을 다르게 줄 수 있다. 마치 웹프로그래밍 시에 css에서 hover와 같은 효과라고 볼 수 있다. 우선 selector엘리먼트를 정의 할 xml 파일을 하나 만들어야 되니res/drawable 디렉토리에서 마우스 오른쪽을 클릭해서 resource파일 추가로 해서 만든다. selector_ex.xml 위가 selector의 기본 구조이며, 안에 item엘리먼트가 존재하는데 여기에서 어떤 상태에 따라서 색상을 줄 수 있는가를 지정할 수 있다. 상태의 목록android:state_enable : 사용 가능 상태android:state_selected : 선택 상태android:state_pressed : 클릭 상태 (눌려있는 경우)a..
사용자가 화면을 터치하거나 키(홈키, 음량 등)를 누르면 이벤트가 발생하고 다음 메서드가 호출된다. boolean onTouchEvent(MotionEvent event); boolean onKeyDown(int keyCode, KeyEvent event); boolean onKeyUp(int keyCode, KeyEvent event); 위와 같은 메서드들은 모두 Activity클래스에 정의되어 있다. 우리가 직접만드는 클래스는 모두 Activity의 서브클래스로 부터 상속받아 코딩하기 때문에 이 이벤트들을 오버라이딩 할 수 있다. 그리고 기존에 존재하는 뷰들에 대하여 이벤트를 사용하기 위해서 다음과 같은 리스너 인터페이스를 구현해서 이벤트를 발생 시킬 수 있다. View.OnTouchListener ..
알림 대화상자는 마치 자바스크립트의 confirm함수와 같은 기능을 담당하여, 일방적으로 메세지를 보여주고, 예, 아니오, 같은 응답을 처리할 수 있다. 다음은 대화 상자를 띄워서 예를 누르면 액티비티를 종료하는 애플리케이션 코드이다. 레이아웃 xml 코드 액티비티 java 코드 public class DialogActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dialog); } public void onClickCreateDialog(View v) { ..