Android2012. 2. 16. 18:44

개발하면서 많이 쓰는 View 중에 하나가 EditText 입니다. 이번에 개발하던 중에 EditText가 화면의 하단부분에 위치해 있거나 SoftKeyboard의 종류에 따라 사용중인 EditText 의 레이아웃을 가려버리는 일이 생기더군요.

- 설정된 기본 레이아웃입니다.

일부로 EditText의 영역이 SoftKeyboard에 가려질 수 있도록 화면 하단에 배치 했고요.

- 아이디 EditText 에 포커스가 가면서 SoftKeyboard가 올라온 상태입니다.

기본적으로 해당 Activity의 기본 레이아웃이 SoftKeyboard가 올라오면서 살짝 함께 올라가긴 하지만 아이디의 EditText 레이아웃도 가리고 패스워드 EditText의 영역은 보여지지가 않네요.

AnroidManifest.xml 의 해당 Activity에 아래 코드를 입력하면 레이아웃 문제가 해결됩니다.

android:windowSoftInputMode="stateAlwaysHidden|adjustResize"

adjustResize 의 경우가 EditText의 레이아웃을 SoftKeyboard 위로 사이즈를 조정해주고 stateAlwaysHidden 은 처음 Activity가 보여지게 되면서 EditText 에 기본 포커스가 가면서 SoftKeyboard가 보여지는 것을 방지해줍니다.

수정된 레이아웃

'Android' 카테고리의 다른 글

#Android ViewPager  (2) 2012.02.07
#Android Spinner Text Size 및 배열 지정.  (2) 2012.02.04
#Android Device별 기본 UI (Spinner)  (0) 2012.02.03
#Android 이미지 다운로드  (0) 2012.01.19
#Android 파일 다운로드  (0) 2012.01.18
Posted by ™설야
Android2010. 12. 7. 18:12

 오늘 Android SDK 2.3 업데이트 소식에 바로 SDK 업데이트와 이클립스 ADT 업데이트도 있길래 모두 업데이트 시켰습니다. 하지만 2.2 SDK에서 되던 나인패치가 실행이 안되더군요.

나인패치 실행 시 뜨던 오류 메세지

2.3 SDK 업데이트를 잘못했나 싶어 다시 받아도 봤지만 안되더군요. 이것저것 해보다가 안되서 2.2SDK 폴더와 2.3SDK 폴더를 비교해보니 tools/lib 폴더 안에 swing-worker-1.1.jar 가 2.3 SDK에는 존재 하지 않더라구요.
 2.2 SDK에 있던 swing-worker-1.1.jar 를 복사해다가 2.3 SDK (tools/lib 폴더)에 넣어주니 문제없이 나인패치가 실행이 되더라구요.
 왜 업데이트 되면서 저 파일이 누락되어버렸을까요?;;; 오전에 나인패치 사용할 일이 있었는데 보류하다가 이시간이 되서야 해결했네요 ㅜㅠ;;


Posted by ™설야
Android2010. 4. 10. 02:41

 


 배운것들 이것저것 짜집기 해서 만든 첫번째 안드로이드 어플인 "우편번호 검색기" 입니다. 편지를 보낼일이 많아서 우체국에 자주가는데 갈때마다 모토로이로 3G를 이용, 인터넷을 통해 우편번호를 검색하거나 우체국에 있는 우편번호 책자로 하나하나 찾아가며 적는게 너무 불편해서 편의를 위해 만들게된 어플입니다.
 이제 막 배우면서 만들어본 어플이라 부족한면이 보이실겁니다. ^^ 버그나 개선사항이 생기면 서슴치 마시고 댓글남겨주시기 바래요~^^

p.s
 아직 마켓에서 검색이 되질 않길래 처음에 이름을 "우편번호 검색"에서 "우편번호" 로 바꾸고 "우편번호"로 검색을 하니 검색은 되네요 ㅜㅠ;;; 좀더 지켜봐야 할듯,,,

어플이름 : 우편번호 (ZipCode(kr))
어플용량 : 39.1KB
어플가격 : 무료(Free)
사용방법 :
 처음 실행시 혹은 우편번호 DB파일이 이상이 있는경우 DB파일을 SD카드로 다운로드 받게 됩니다.
다운로드 받은 DB파일과 사용하시면서 등록한 즐겨찾기 목록은 /sdcard/ZipCodeDB 폴더와 파일들을 생성합니다. 차후에 어플이 필요 없게 되시면 해당 폴더를 삭제해 주시면 됩니다.
 에뮬레이터에서 실행했을때는 처음에 전지역 DB만 가지고 검색을 하니 검색속도가 느리더군요. 그래서 스펙이 약한 기기에서도 DB검색 속도 향상을 위해서 전지역/도,광역시 를 구분해 넣었습니다. 전지역 보다는 각각의 도,광역시별 검색이 더 빠른 결과 목록을 가져옵니다.
 
 
 



다운로드 받으시려면 위의 QR코드를 이용하시거나 마켓에서 "우편번호"로 검색하세여~ 

Posted by ™설야
Android2010. 1. 20. 16:25

 워낙에 외우는게 귀찮은지라 기본적으로 생성이 안되는 오버라이드된 메소드들은 기억나는건 치고 기억안나는것은 이전소스를 참조하거나 어찌어찌 더 귀찮은 방법으로 찾아 적고 있었는데 이클립스에 기본적으로 override or implement 된 메소드들을 자동 생성해 주는 방법이 있었다. 이걸 이제 알아 사용하다니... ㅜㅠ
역시 코딩하다 답답하고 뭔가 안풀릴때는 이것저것 만져보는 뻘짓을 해주면 먼가 알게된다 ㅋㅋㅋ

Eclipse - [Source]-[Override/Implement Methods...] 선택



이렇게 하면 현재 선택되어진 곳의 오버라이드되는 메소드들이 나오며 원하는 메소드의 체크박스를 클릭한 후에 OK버튼을 누르면 자동으로 메소드가 생성된다. 아~ 이 편한걸 이제야 알다니 ㅜㅠ;;;
Posted by ™설야
Android2010. 1. 20. 16:04

         
  

 좌측 이미지가 기본적인 다이얼로그를 사용했을때 보여지는 형태이다. 뒷배경이 살짝 어두워지면서 다이얼로그가 팝업되는 형식이다. 우측의 이미지가 뒷배경이 어두워지는거 + Blur 형식으로 뿌옇게 변하게 되는 형식의 다이얼로그 팝업이다.

dialog = new Dialog(BlurDialogTest.this);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
dialog.setContentView(R.layout.dialog);
dialog.setTitle("다이얼로그");
dialog.show();

dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

이 부분이 뒷 배경에 blur 형식의 효과로 지정해주는 부분이다.
이런 효과 말고도 API를 참조 하면 더 많은 효과들을 볼수 있다.
http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html

Posted by ™설야
Android2010. 1. 20. 10:02



<메뉴창을 올린다>-<Settings>-<Language&keyboard>-<Select locale>-<한국어>

 여태 에뮬레이터는 그저 코딩후 결과 확인창 정도로 생각하다가 막히는게 있어서 에뮬레이터를 이것저것 만지다 보니 한국어로 설정할 수 있는 곳이 있었다. ㅡ.,ㅡ;;; Android SDK 2.1 버전 나오고 테스트했으며 보니깐 2.0.1 버전에서도 한국어 설정이 가능하다. 나만 모르고 있었던건가.. ㅜㅠ;;
 그다지 영문을 쓰면서 불편한 점은 없었지만 한국어로 설정되니깐 왠지 반갑다.

영문설정된 기본페이지



메뉴를 열어 언어및 키보드 설정창으로 들어간다.


반가운 한국어~~



설정 완료 후 우리나라 언어로 변경된 기본 페이지와 메뉴창




'Android' 카테고리의 다른 글

이클립스 오버라이드된 메소드 자동생성 방법  (0) 2010.01.20
다이얼로그 : 뒷배경 흐리게 처리하기  (0) 2010.01.20
우연치 않게...  (0) 2010.01.18
Day 5 : Gesture Test  (0) 2010.01.12
Day 4 : onTouchEvent 테스트  (0) 2009.12.31
Posted by ™설야
Android2010. 1. 18. 18:42


 열심히 안드로이드 빨간책을 공부하는데 지진정보를 가져오는 소스코드를 실행해보니 몇일전 아이티 강진에 이은 여진이 오늘도 발생했다는것을 직접 확인해 볼 수 있었다. 아이티 뿐만 아니라 전세계 여러곳에서 지진이 수차례 발생되는걸 보니 무서워진다.

 안드로이드 빨간책(프로페셔널 안드로이드 애플리케이션 개발 /저:리토 마이어) 이거 생각의외로 난이도가 있는 책이다. 이것저것 소스코드 가져다 공부하면 되겠지 했던 생각을 뒤집어 놓았고 머릿속에 집어넣어야 할 것도 산떠미처럼 불어나 버렸다.
Posted by ™설야
Android2010. 1. 12. 10:25

 테트리스 게임을 한번 만들어보고자 키 입력이 아닌 터치를 이용해 테트리스의 조각을 이동시키고 변형 시켜 보려고 제스쳐동작에 대한 기능을 알아보았으나 정보가 많지 않았다 나의 검색신공은 구글 안드로이드 홈피에서 제공하는 소스와 샘플 소스. 하지만 여간 알아먹질 못하것고 내가 필요한 기능만 추려서 간단히 알아보고자 기존 샘플 소스에서 변형시켜 만들어 보았다.

 

 이 소스의 기능은 제스쳐 이름을 입력 받고 제스쳐 오버레이에 동작된 제스쳐를 ADD를 시켜 추가 시키고 TEST  버튼을 눌러 ADD시킨 제스쳐 동작이 제대로 작동하는지만 알아보는 테스트 이다.

 

초기화면)

초기 화면에서 제스쳐 동작을 취해 ADD버튼을 눌렀을때의 화면.

 

 

TEST 화면)

ADD시킨 제스쳐를 취하면 해당 제스쳐의 입력했던 이름이 출력되게 하였다.


 하지만 정작 만들어놓고 보니 내가 테트리스 게임을 터치형식의 게임으로 만들 때 구지 필요하지 않을 것 같다. 게임의 하단 부분에 터치반응 사각영역을 넣고 터치가 입력된 곳과 끝난곳의 위치를 계산하여 테트리스 블록을 드랍시키는 형식으로도 충분히 가능할 것 같기 때문이다. 그래도 제스쳐란 기능에 대해서 알아 볼 수 있어 매우 유용했단 생각이든다.

  만들 때 해결 못한 부분이 있는데 제스쳐를 ADD 시킬때 파일을 만들어 그 안에 제스쳐의 이름과 동작을 저장하는데 a라는 이름의 제스쳐를 ADD시킨 후 새로운 b라는 이름의 제스쳐를 등록시키면 TEST해보면 제일 나중에 등록된 b라는 이름의 제스쳐 밖에 동작을 안하게 된다. 이건 더 공부해야할 문제인듯 하다.



제스쳐 등록시키기

    public void addGesture() {
        final EditText gName = (EditText) findViewById(R.id.et_name);	//제스쳐 이름 입력창
        final CharSequence name = gName.getText();						//제스쳐 이름 가져오기
		try {
	        if (name.length() == 0) {//제스쳐 이름의 길이가 0 이면 에러메세지를 보여준다.
	            Toast.makeText(this, "You must enter a name", Toast.LENGTH_LONG).show();
	            return;
	        }
	        GestureLibrary gLib = GestureLibraries.fromPrivateFile(this, "myGesture");
        	gLib.addGesture(name.toString(), mGesture);
	        gLib.save();
		} catch (Exception e) {
	        Log.e("Failure","Gesture no save");
		}
        Toast.makeText(this, name+" saved", Toast.LENGTH_LONG).show();
    }



사용된 제스쳐 오버레이

    


    





소스 저장



'Android' 카테고리의 다른 글

안드로이드 에뮬레이터 한글 설정  (0) 2010.01.20
우연치 않게...  (0) 2010.01.18
Day 4 : onTouchEvent 테스트  (0) 2009.12.31
Day 4 : 이미지 그려주기 테스트  (0) 2009.12.31
Day 4 : 2D 를 표현하기 위한 기본 코드  (0) 2009.12.31
Posted by ™설야
Android2009. 12. 31. 21:26

 
public boolean onTouchEvent(MotionEvent event) { 
	iClickGetX = (int)event.getX();//터치된 곳의 x좌표
	iClickGetY = (int)event.getY();//터치된 곳의 y좌표
	ActionValue = event.getAction();//터치 액션값 
	
	if( ActionValue == MotionEvent.ACTION_DOWN ){//터치 하고 있을때
	sAction = "ACTION DOWN";
	}else if( ActionValue == MotionEvent.ACTION_UP ){//터치 하지 않을때
	sAction = "ACTION UP";
	}else if( ActionValue == MotionEvent.ACTION_MOVE){//터치된 상태에서 이동중(드래그)
	sAction = "ACTION MOVE";
	}
	return super.onTouchEvent(event);
}
요 메소드를 가지고 화면에 터치한곳으로 움직이는 이미지를 그려보았다.
이번 글작성은 SyntaxHighlighter를 티스토리에 적용시켜 코드를 뿌려주는 테스트 또한 해보았다. ㅋㅋ  

결과물

'Android' 카테고리의 다른 글

우연치 않게...  (0) 2010.01.18
Day 5 : Gesture Test  (0) 2010.01.12
Day 4 : 이미지 그려주기 테스트  (0) 2009.12.31
Day 4 : 2D 를 표현하기 위한 기본 코드  (0) 2009.12.31
Tip. Key 에 대한 정의 지정해주기.  (0) 2009.12.30
Posted by ™설야
Android2009. 12. 31. 16:04

PNG 파일을 불러와 그려주고 크기변경하고 이미지 자르기 테스트

작성코드

DrawTest.java

    protected void onDraw(Canvas cvs){

        

        Paint paint = new Paint();

        paint.setColor(Color.argb(iA, iR, iG, iB));

      

        Bitmap iOrigin = getImage(R.drawable.img_test);

        Bitmap iResize = resizeImage(iOrigin, 50, 200);

        Bitmap iClip = clipImage(iOrigin, 21,5, 58, 32);

        

        cvs.drawBitmap(iOrigin, 0, 0, paint);

        cvs.drawBitmap(iResize, iOrigin.getWidth(), 0, paint);

        cvs.drawBitmap(iClip, iOrigin.getWidth()+iResize.getWidth(), 0, paint);

        

    }

    /**

     * Get Bitmap

     * @param resId Resource ID

     * @return 비트맵 넘겨주기

     */

    public Bitmap getImage(int resId){

        return BitmapFactory.decodeResource(getResources(), resId);

    }

    /**

     * Resize Bitmap

     * @param origin 원본 비트맵

     * @param width 변경할 비트맵의 가로 사이즈

     * @param height 변경할 비트맵의 세로 사이즈

     * @return 변경된 비트맵 넘겨주기

     */

    public Bitmap resizeImage(Bitmap origin, int width, int height){

        return Bitmap.createScaledBitmap(origin, width, height, true);

    }

    /**

     * Clip Bitmap

     * @param origin 원본 비트맵

     * @param sx 원본이미지에서 자를곳의 시작 x 위치

     * @param sy 원본이미지에서 자를곳의 시작 y 위치

     * @param cw x,y 위치부터 자를 가로 크기

     * @param ch x,y 위치부터 자를 세로 크기

     * @return 원본 비트맵에서 자른 부분 넘겨주기

     */

    public Bitmap clipImage(Bitmap origin, int sx, int sy, int cw, int ch){

        return origin.createBitmap(origin, sx, sy, cw, ch);

    }

 

결과물


사용된 이미지

Posted by ™설야