마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

키보드 앱에서 키 높이 사용자가 선택하는 소스 진위 여부 문의

0 추천

안녕하십니까?

저는 키보드 앱에 대하여 아이디어가 있어서 외주로 앱개발을 의뢰했는데,

프로그래머가 다음의 A단원과 같이 버튼 높이를 변수화하여 사용자가 선택하게 하는 것을 못하겠다고 해서,(참고 : 버튼 높이를 변수화 하지 않고, 버튼 높이가 다른 여러 개의 레이아웃을 별도로 마련하여 사용자가 선택하게 하는 노가다성 프로그램은 할 수 있다고 합니다. 그렇게도 자기도 하기 싫다고 합니다.)

그래서, 제가 인터넷에 자문을 구하였고,

굉장히 어려운 과정으로, 3번의 쪽지에 걸쳐서 답변자가 확실히 맞다고 하는 B단원과 같은 답변을 얻어 냈는데,

제가 외주로 맡긴 프로그래머는 B단원의 내용은 버튼 높이를 변수화 하는 것이 아니고 버튼에 어떠한 글자를 표시할 때 어느 위치에 표시할 것인가에 관한 것이라고만 반복적으로 말하면서 시도조차도 하지 않으려고 합니다.

 

그래서, 어느 쪽이 맞는 것인지 문의합니다.

혹시 B단원의 내용이 틀린 것이라면 어떻게 해야 하는 것인지 한 수 가르쳐 주시면 고맙겠읍니다.

 

==============================================================

A단원 : 인터넷에 질문한 내용

제목 : 문자입력앱 개발시 키(버튼)높이를 사용자가 선택할 수 있게 하는 방법

 

서두 :

초보개발자입니다.(공일공-이삼일구-2739   kkj16542@hanmail.net)

고수님들의 도움이 절실히 필요합니다.

 

문자입력 앱을 만들고 있읍니다.
ts한글키보드, MN로그인키보드, 반츄키보드 등의 문자입력앱에서는
설정화면에서 여러 개의 버튼높이 중 하나를 선택할 수가 있던데, 저는 어떻게 하는지 도저히 모르겠읍니다.
즉, 키높이를 변수로 처리하여 프로그래밍 하는 방법을 모르겠읍니다.

 

,

질문 :

글쇠 높이(key height)를 임의로 설정할 수 있는 소프트 키보드(soft keyboard)를 만들고 싶습니다.
글쇠 높이에 따라 키보드 높이도 달라져야 하는데 안됩니다.
레이아웃 하나로도 글쇠 높이를 설정할 수 있고, 글쇠 높이에 따라 키보드 높이가 달라지게 하는 방법은 무엇입니까?
(즉, 키높이를 변수로 처리하여 프로그래밍 하는 방법을 알고 싶습니다.)

-변수로 처리되는 키높이 단위가 % 이든 dip 이든 상관이 없으며, 그외의 단위도 괜찮습니다.
하지만, 가장 선호하는 것은 % 단위를 변수화 하는 것입니다.

-버튼높이가 다른, 여러 개의 키보드 레이아웃을 두고, 설정화면에서 선택하는 방법으로는 제가 할 수 있을 것 같지만,
그 방법은 세련되지 못한 방법이고 나중에 프로그램이 복잡해지면 문제를 일으킬 것 같아서, 지금은 위의 질문과 같은 방법을 찾고 있읍니다.

.

.

참고사항:

위의 3가지의 다른 문자앱에서의 버튼높이 설정하는 행태는 다음과 같습니다.
MN로그인키보드
-설정-글쇠높이 조정 : 보통, 5~50%크게(5%간격으로 조정)

 

TS한글키보드
-설정-키버튼 높이 설정 : 1~8단계(1단계 간격으로 조정)

 

반츄키보드(이것은 저작권 문제로 구글플레이에는 없고, 인터넷에 널리 퍼져 있읍니다.)
-설정-레이아웃설정-세로모드 버튼높이 : 40~150 dip (1 dip 간격으로 조정)

 

아마도, 위의 3가지 앱에서의 버튼높이 조절방법을 유추해보면,
아마도 레이아웃에서의 버튼높이 단위를 dip으로 해서, 버튼높이를 변수로 해서 처리한 것 같기도 합니다.
그런데, 저는 그렇게 하는 방법을 모르겠읍니다.

버튼높이를 dip으로 프로그래밍할 수도 있지만, 1개 버튼 높이가 전체 화면 높이의 몇 % 인지로 프로그래밍 가능하다는 것도 알지만,
역시나, 버튼높이 단위를 %로 해서, 버튼높이를 변수로 해서 처리하는 방법도 모르겠읍니다.

 

 

==============================================================

B단원 : 인터넷에서 구한 답변

기존의 softkeyboard 오픈소스 보시면 도움 되실듯합니다.

https://code.google.com/p/hangulkeyboard/

 

키보드 그리는 로직
src/org/kandroid/app/hangulkeyboard/CandidateView.java 159라인 부터 보시면 해결하실수있습니다.

그리고
src/org/kandroid/app/hangulkeyboard/LatinKeyboard.java 94라인 아래 내용도 참고하세요.

static class LatinKey extends Keyboard.Key {

public LatinKey(Resources res, Keyboard.Row parent, int x, int y, XmlResourceParser parser) {
super(res, parent, x, y+10, parser);

}

/**
* Overriding this method so that we can reduce the target area for the key that
* closes the keyboard.
*/
@Override
public boolean isInside(int x, int y) {
if (SoftKeyboard.DEBUG) Log.v("isInside", "x:"+x+"/Y:"+y);
y = y + 10;
return super.isInside(x, codes[0] == KEYCODE_CANCEL ? y - 10 : y);
}
}

미국대통령 (210 포인트) 님이 2013년 6월 24일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...