본문 바로가기

Android

(43)
ffmpeg 라이브러리 빌드 #1 ffmpeg을 사용할 일이 있어 ndk로 빌드환경 구성을 알아보았다. ffmpeg을 언젠가 만져보긴 했는데,아마도 다이렉트쇼 필터 만들때였던것 같은데.. 이미 까막눈이 되어 있어서, 구글링~ 우선 참조할 만한 블로그 들. 1. 소스코드 다운로드ffmpeg : http://www.ffmpeg.org/download.html $ sudo apt-get install git-core$ git clone git://git.videolan.org/ffmpeg 2. 참조 사이트 : static 빌드로 라이브러리를 생성을 위한 작업설명* 음.. 리눅스용 ndk r5c 에는 툴체인 경로가 포스트의 내용과 차이가 있음. http://androidcore.com/android-programming-tutorials/641..
Drag&drop listview 리스트뷰의 드래그&드롭은 android Music app의 TouchListView 소스를 살펴보면큰 줄기는 잡을 수 있다. 해당 소스로 적용했더니 무언가를 잘못했는지 원하는 처리가 이루어지지 않았다.drop 시의 포지션 정보가 영 이상해서.. 일단, 기존 소스는 두고, 몇가지 눈에 들어오지 않는 루틴과 변수명을 정리했다.대부분의 내용은 기존 소스와 동일. 특정 위치에 머무를 경우 자동 스크롤이 되도록 하기 위해 쓰레드를 사용할 예정인데,요건 일단 나중으로 미뤄둠~ 1. 리스트뷰를 상속받는 커스텀뷰를 만든다.public class MyListView extends ListView { private Context mContext; private ImageView mDragView; private Windo..
뷰 전환시 3차원 에니메이션 적용하기 뷰 3차원 회전 뷰 에니메이션에 대해서 기존에 포스팅 했는데, 이번엔 뷰 전환시 3차원으로회전하며 전환하는 에니메이션에 대해 정리차원으로 포스팅한다. 소스는 안드로이드 sdk의 샘플(API Demos) 중 Views > Animation > 3D Transition 에구현되어 있다.소스코드는 Rotate3dAnimation.java / Transition3d.java레이아웃은 animations_main_screen.xml 1. 에니메이션 클래스 구현기존 에니메이션 클래스는 2차원 이동과 회전을 지원하고 있는데, 이를 상속받아 3차원 회전 기능을 넣는다. 방식은 갤러리 구현시와 같이 Matrix , Camera를 사용한 회전으로 처리한다.Animation 클래스의 applyTransformation 메쏘..
안드로이드 위젯 배경 이미지, 나인패치 * 크기가 가변적인 객체의 배경 그리기 배경을 그리기 위한 방법은 여러가지가 존재한다. 일반적으로 xml에서 android:background = "@drawable/image" 를 사용하는데, 이미지의 크기와 오브젝트(위젯)의 크기가 같은 경우는 상관없지만 다르면 스케일에 의한 이미지 손상이 발생한다. 가로로 확대한 모습인데, 원하는 모양이 아니다... 그렇다고 사이즈가 큰 이미지를 만들기도 리소스 낭비이고... 단말 같이 메모리 등의 제약이 많던 시절엔 이를 3개의 리소스로 분리해 표현하곤 했다. 이렇게 변경되지 않을 좌우측 이미지와 사이즈만큼 반복해 그릴 라인 이미지로 리소스를 구성해서 배경을 그려줄 수 있다. 이또한 가로, 세로 한 방향으로만 적용되므로, 상하좌우로 스케일되는 객체의 경우 각 리소..
옵션메뉴 배경 변경 * 옵션메뉴 * 옵션메뉴는 컨텐스트 메뉴와는 다르게 옵션버튼(메뉴버튼)을 통해 호출되는녀석이다.보통 하단에서 올라오게 되는데, activity에서 해당 이벤트 콜백 메쏘드를 오버라이드해작성해 주면 된다. public boolean onCraetOptionsMenu(Menu menu);public boolean onPrepareOptionsMenu(Menu menu);public boolean onOptionsItemSelected(MenuItem item); 뭐 옵션메뉴 관련한 예제는 많이 있으니 생략하고~ 이 옵션메뉴의 배경색을 바꿀수 있을까?.. 옵션 아이템에 배경이미지를 넣을 수 있을까?배경을 바꿔주기 위한 메쏘드를 하나 구현한다. protected void setOptionMenuBG() { Fa..
갤러리, 커버플로우 구현 소스코드는 http://www.inter-fuser.com/ 을 참고하세요. 해당 소스에서 몇가지만 최적화 해주시면 될 듯 합니다. 우선 이미지가 큰 경우 out of memory가 발생 할 수 있습니다. 따라서 화면에 표시할 비트맵은원본을 그대로 사용하지 않고, 해당 영역에 맞게 축소해 사용합니다.(이 내용은 이 포스트에 포함되어 있습니다.) 그리고, Adapter의 getView() 에서 convertView가 정상적으로 들어오지 않습니다.이는 안드로이드의 버그라고 알고 있으며, 이를 해결하기 위해 별도의 구조로이미지뷰를 만들어 사용하셔야 합니다.버그리포트 : http://code.google.com/p/android/issues/detail?id=3376 Gallery를 상속받은 객체 구현시 get..
AppWidget 여러 개의 위젯을 가진 앱위젯 1. 앱위젯과 프로바이더 앱위젯 프로바이더는 앱위젯 호스트와 커뮤니케이셔을 위한 중간개체이다. 그러다 보니 실제로 이미지를 그리거나 이벤트를 처리하는게 아닌 이러저러하게 처리해 달라고 호스트에 요구하고, 해당 요청에 따라 앱위젯 호스트가 적당한 처리를 하게 된다. 아래와 같이 여러개의 컨트롤(위젯)을 가진 앱위젯을 구성하려고 할때 필요한 사항들을 포스트한다. 2. ui 구성 오디오 재생기 앱위젯이다. 테스트용이라 아무 이미지나 붙여봤다. 보면 재생을 위한 컨트롤 이 4개 보이고, 상단에 미디어 스캔으로 얻은 썸네일 이미지와 좌,우 버튼이 보인다. 3. 레이아웃 ( widget_control_panel.xml ) 위 위젯은 아래와 같은 레이아웃으로 구성되어 있다. 3. 프로바이더 ( res/xml/play..
OpenGL 사용하기 음.. 오픈지엘은 직관적인 api 구조를 가지고 있어서 사용하기에 그다지 어렵지 않다.다이렉트x 5, 6 대의 느낌과 같다는 생각이 들기도 하는데,윈도우에선 오픈지엘을 실제로 사용해보질 않아서 정확히 어떻다 이야길 하긴 그렇다. 사실 3D쪽은 api 외적으로 이해해야 하는 것들이 있는데, 뷰포트, 모델, 프로젝션, 월드 , 행렬, 픽킹, 필터, 각종 쉐이더까정.. api 를 제외하면 다이렉트x 관련 서적에 많이들 설명되어있다.다른점도 있는데 다이렉트X는 월드,뷰, 프로젝션 순서의 파이프라인을 사용하지만오픈지엘은 모델뷰, 프로젝션으로 단순화 되어 있다. 이 포스트에선 뭐 아는게 쥐뿔도 없으므로, 당연 api 만 다룬다. 1. 네모를 그리자!! -_-;;튜토리얼에 언제나 나오는 내용. 1-1. 서피스뷰 선언..