본문 바로가기

Android

Configuration with name 'default' not found 더보기
안드로이드 자바 vs 표준 자바 안드로이드 자바와 표준 자바의 차이점: 표준 자바는 VM이라는 버츄얼 머신을 사용하기 때문에 성능이 떨어짐. 저사양 단말(핸드폰, 각종 인베디드 할 장치 등)에서 취약함. 특히 그래픽 쪽의 성능이 매우 낮다. 그래서 안드로이드 자바는 표준 자바와 비슷하지만 화면을 구성해주는 API를 표준 자바 보다 더욱 크게 개선함. 더보기
어댑터(Adapter)에 대해서 가장 먼저 알아야 하는 내용은 아래 그림이다.위의 그림은 뷰의 계층 구조를 나타낸다. 여기서 우리들이 주로 쓰는 ListView나 GridView를 주목하자. ListView가 AdapterView를 상속하고 있다. 다시 말하자면 ListView는 껍데기고 실제는 AdapterView 라는 의미다. 위의 내용을 이해 못했으면 그냥 외우자. ListView는 껍데기고 실제는 AdapterView다. 이제 본론을 얘기해보자. 우리가 안드로이드 프로그래밍에서 사용하고 싶은 기능이 GridView라고 하자. 근데 위에서 GridView는 껍데기라 아무 기능이 없다. 그럼 실제 기능은 AdapterView를 사용해야 한다. 그런데 AdapterView를 사용하려면 Adapter라는 녀석이 필요하다. 쉬운 이해를 .. 더보기
프래그먼트(Fragment) 쉽게 만들기 Fragment 가 조각이라는 뜻을 꼭 기억해야 합니다. 위의 그림같이 일일이 인텐트로 액티비티 마다 옮겨간다면 관리가 쉽지 않습니다. 액티비티 생명주기 다 거치고 UI 개별 요소 관리, 각 부분의 상태변화까지 모조리 확인 하며 프로그래밍 한다는 것은 상당히 피곤한 일입니다. 물론 초보일 때는 Intent로 넘겨주는 것만 해도 끝나지만.. 아무튼 이러한 것을 Fragment를 사용하면 Fragment Manager가 알아서 해줍니다. 그래서 Fragment를 사용합니다. 읽으시는 분중에 '나는 생명주기도 모르겠고, Fragment Manager도 모르겠고.. 그냥 계속 인텐트로 액티비티를 많이 쓰면 앱이 느려지고 리소스 많이 잡아먹을까봐 Fragment 쓰려고 한다' 라고 생각하시는 분들도 있을 겁니다... 더보기
레이아웃 관련 아래 그림은 위 그림과 똑같은 내용인데, 실제 안드로이드 스튜디오의 화면을 가져다 만든 것. padding은 텍스트(아래 그림에선 ok)와의 여유공간. layout_margin은 버튼(위젯이라고도고 함)과 전체 화면과의 여유공간 layout:weight 와 layout:height 의 선택 속성중에 wrap_content 라는게 있다. wrap_content 는 안에 있는 내용물(content)에 따라 크기가 변하게 설정 하는 기능이다. 예를들어 아래 그림을 보자. 같은 버튼을 만들고, 버튼 안의 내용물의 길이만 다르게 했다. 둘다 설정은 wrap_content 다. 그런데 길이가 달라진 것이 육안으로도 확인 가능하다. 이렇듯 wrap_content는 내용물에 따라 크기나 길이가 변하는 설정 임을 알 수.. 더보기
java.lang.RuntimeException: Your content must have a TabHost whose id attribute is java.lang.RuntimeException: Your content must have a TabHost whose id attribute is tabhost를 만들다보면 위와 같은 에러를 경험할 때가 있다. 이유는 xml의 id를 잘못 입력한 경우 저런 에러가 생긴다. 십중 팔구는 android:id="@id/tabhost" 라고 했을꺼다. 그리고 mainActivity에서 R.id.tabhost라고 호출했을거고..위와 같은 식으로 했을 때 에러가 생기는 것이므로 이를 수정하자. 먼저 아래와 같이 xml의 id의 양식을 바꾼다. 그리고 아래와 같이 mainActivity의 findViewById안의 파라미터도 아래와 같이 바꾼다. 끝~ 더보기
Canvas Draw bitmap 개념 이해 실제로 화면에 그림을 그리는건 draw 메소드들. draw 메소드를 사용하는 주체는 Canvas. Canvas는 주체이므로 그림을 그리려면 도화지가 필요하다. 이 도화지가 bitmap drawbitmap도 결국은 bitmap을 도화지에 그리는것. paint는 붓 종류. 굵은 붓인지. 얇은 붓인지...어쨋든 붓 종류. point는 좌표. 더보기
extends AppCompatActivity 안에서 dialog 만들기, dialog 크기 변경 제목을 보면 대충 감이 오시리라 믿는다. 무슨말인고하니.. 123456public class example extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }Colored by Color Scriptercs 위와같이 처음 안드로이드 스튜디오에서 액티비티를 만들면 위와같이 나온다. 즉 위의 코드가 거의 기본 모습인데...여기에 dialog를 만드려 한다. 보통 책에 보면 alert 다이얼그니 무슨 다이얼로그니 하면서 상당히 어렵게 표현해 두었다. 가장 빡치는건.. 더보기
큰 사이즈의 bitmap을 효과적으로 줄여서 로딩하기 미리 말해두자면 여긴 완벽한 코드를 올리는 곳이 아니다. 그저 '아..그래서 저 코드를 쓴거구나' 정도만 이해했으면 하는 바람으로 글을 쓰는 것이다. 실제 사례라든지 소스코드는 깃허브나 스텍오버플로우 등에 가서 받길 바란다. BitmapFactory는 각종 디코딩 메소드를 제공함. 디코딩이란게 뭐냐면..2진수나 뭐 어떠한 압축된 형태로 저장되어 있는 녀석을 원래로 복원시켜주는게 디코딩이다. decodeByteArray(), decodeFile() 등 여러가지 디코딩 메소드들이 있는데 내가 가진 다양한 형태의 소스에 따라 알맞는 디코딩 메소드를 사용하면 된다. 일단 bitmap을 디코딩 해봤으면 알겠지만..이미지..사진..이라는게 상당히 큰 용량을 자랑한다. 크기도 1024x768을 기본으로 할정도로..... 더보기
각종(?) bar들.. 일단 그림을 보자.약간 흐린 파랑색부분이 Title bar다.진한 파랑색 부분. 시간나오고, 베터리 % 보여주는 부분은 자바 코드로 아래와 같이 치면 없어진다.123@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);//아래 코드를 입력하면 된다.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 타이틀 바를 없애고 싶은 경우는 자바에서도 가능하고 xml, manifests 에서도 가능하다. 취향에 따라 코드를 추가해서 없애자. action b.. 더보기