본문 바로가기

프로그래밍/Android

(94)
Assets 폴더의 이미지 읽기 커스텀 ImageView Asset폴더는 자주 사용되지는 않지만 이를 활용하여 drawable 리소스와 분리된 이미지 작업이 가능하다. 이를 활용하는 예제를 간단히 작성.. 패키지명은 com.test.app 로 가정한다. 1. 커스텀 뷰에서 사용할 attribute 정의image 라는 String 속성을 사용할 예정인데..임의로 제약사항을 둔다. 여기서는 test_image.png 의 경우 app:image = "test_image"를 입력하도록 제한. res/values/attrs.xml에 속성을 추가한다. 사용시에는 아래와 같이 사용된다. 2. 커스텀뷰 생성public class MyImageView extends ImageView { } 3. 레이아웃을 위한 생성자 구성public class MyI..
JSON JSONObjectString jsonString = "json string"; JSON 데이터는 { } 로 묶인 오브젝트와, 오브젝트 하위에 "키":"값", "키":"값" , 와 같이,(콤마)로 키-밸류로 이루어진 옵션 값으로 구성된다. {"TopObject":{"KEY01":"VALUE01","KEY02":"VALUE02""SubObject":{"S_KEY01":"S_VALUE01","S_KEY02":"S_VALUE02"}}} 옵션값은 [ ] 를 사용해 배열로 구성될 수도 있다. 파싱JSONObject json = new JSONObject( jsonString ); * 값 얻기String value = json.getString("KEY01"); * 오브젝트별 파싱해 값 얻기JSONObject to..
HTTP POST/GET 몇가지 정리 연결정보String url="https://my.site.com/test" 클라이언트 생성HttpClient client = new DefaultHttpClient();// 아래 파라미터를 미리 설정 후 파라미터를 기반으로 생성해도 된다. 파라미터설정 : CoreProtocolPNamesPROTOCOL_VERSION : 프로토콜 버전USER_AGENT : User-Agent 헤더.. HttpParams params = client.getParams(); // 프로토콜 정의params.setParameter( CoreProtocolPName.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); // client 생성하지 않은경우 생성// HttpClient client = new Def..
OpenGL es 조명 > 조명 종류주변광(ambient) : 특정한 방향성이 없는 빛, 오브젝트의 모든 면에 영향을 미치고 밝기도 동일분산광(diffuse) : 특정 방향에서 들어와 여러 방향으로 반사되는 빛. 빛을 직접 받는 부분일수록 밝아진다.반사광(specular) : 특정 방향에서 들어와 특정 방향으로 반사되는 빛. > 노말벡터방향성이 있고, 특정방향으로 반사되는 조명의 경우기존 모델에 노말벡터를 위한 버퍼가 추가로 필요하다.노말 벡터는 길이가 1인 단위벡터로 빛의 정도와 반사를 계산하기 위해 필요한 정보.버텍스와 같이 glVertex / glNormal 로 쌍으로 구성하거나 , array의 포인터를 전달하면 된다. > 라이팅 활성화glEnable( GL10.GL_LIGHTING ); > 사용할 라이트 번호(0~7) ..
API demos openGL es 2.0 ApiDemos GLES20Activity.java / GLES20TriangleRenderer.javaglVertexAtribPointer() , glDrawElemnts() 등 몇가지 메쏘드는 안드로이드버전 2.3 이상.. >> 2.0 호환여부 검사ActivityManager am = (ActivityManager) getSystemService( Context.ACTIVITY_SERVICE );ConfigurationInfo info = am.getDeviceConfigurationInfo();if (info.reqGlEsVersion >= 0x20000 ) {// 지원함} 2.0 은 기존 그래픽 파이프라이의 버텍스, 프레그먼트 프로세스가 쉐이더로 변경되었다.렌더러에서 GL10 인터페이스는 무시되며..
GLSurfaceView 배경 투명하게 GLSurfaceView 배경 투명하게 만들기 관련소스 : APIDemos/src/com.example.android.apis.graphics/TranslucentGLSurfaceViewActivity.java GLSurfaceView는 기본 값이 알파채널이 적용되지 않아서,glClearColor( 0,0,0,0 ); 으로 해도 투명값이 설정되지 않는다. EGL을 통해 SurfaceView를 핸들링하므로, 뷰 생성후 EGL, SurfaceView관련 설정만 하면 알파값을 사용할 수 있다. GLSurfaceView myView = new GLSurfaceView(this); // 픽셀포맷을 32비트포맷(8,8,8,8)으로 변경한다.myView.setEGLConfigChooser( 8, 8, 8, 8, 16..
최상위 뷰 만들기 Toast와 같이 최상위에 뷰 띄우기. Toast도 일반적인 뷰처럼 구성하고, 윈도우에 add 하는 구조로 작성되어 있다.간단히 Toast와 같이 최상위에 뷰를 띄우는 요소들에 대해 정리. 1. 레이아웃 구성Toast는 makeText라는 static 메쏘드를 제공하는데, 간단히 토스트를 띄울 수 있도록한 메쏘드다.요녀석을 살펴보면, 흔히 사용되는 루틴으로 이루어져 있다...LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflate.inflate( com.android.internal.R.layout.transient_notification, null);..
OpenGL 프레임버퍼 사용 API DEMOS에 프레임버퍼를 사용해 텍스처에 그림을 그리는(Render to texture) 예제가 포함되어 있다. 프레임버퍼는 openGL 2.0 부터 지원하는데, 예제에서는 extension pack 을 통해 1.1에서프레임버퍼를 사용하는 예제를 다루고 있다. >> onSurfaceCreated 1. 프레임버퍼 지원 여부 검사String extensions=" " + gl.glGetString(GL10.GL_EXTENSIONS) + " ";if( extensions.indexOf(" GL_OES_framebuffer_object " ) >= 0)return true; 2. 텍스처 생성int tex_id;int[] textures = new int[1];gl.glGenTexture(1, textur..