2011-08-05 3 views
0

알파벳을 표시하는 것과 같은 간단한 작업을 위해 약 26 개의 버튼을 만들어야합니다. 레이아웃 디자인을 사용하여이 작업을 수행 할 수 있습니다.어느 쪽이 더 낫습니까? 실행 시간이나 디자인 타임에 안드로이드에서 버튼을 만들기

런타임에이 버튼을 만들면 더 많은 성능을 제공합니다 (메모리, 속도, apk 크기 고려).

중요 요구 사항 :이 레이아웃은 4 개 가지 활동에 의해 사용됩니다

  • .
  • 한 번에 26 개의 버튼을 사용자에게 표시해야합니다.
  • 이 버튼에는 배경이 포함될 수 있습니다. image.

편집 :이 레이아웃은 다른 네 가지 활동을위한 팝업 창과 같습니다. 사용자는이 레이아웃의 알파벳을 누를 수 있습니다. 영문자가 선택되면 즉시 레이아웃이 닫힙니다.

답변

1

Yikes. XML은 중 일부는 동적 런타임 작성 또는 적어도 두 가지 조합에 대해 비명을 지르는 것이 가장 좋습니다. 처리 시간이나 apk 크기에서 어느 정도 차이를 보지 않을 것입니다. 이는 코드 유지 보수 비용 절감으로 이어질 것입니다.

예를 들어, 각 문자 버튼에 대해 패딩과 같은 새로운 속성을 변경하거나 추가하려는 경우 어떻게 될지 고려하십시오. 수동으로 모든 XML 요소를 변경하거나 적절하게 찾기/바꾸기위한 영리한 정규식에 대해 생각하고 싶습니까?

포괄적이고 유지 보수가 쉬운 솔루션을 위해 <include> 문과 런타임 수정을 함께 사용했습니다.먼저 버튼 하나를 만들어서 모든 단추가 어떻게 보이길 원하는지 생각해보십시오. "LetterButton"스타일을 style.xml에 추출하고 버튼에 android:style="@style/LetterButton" 속성을 대신 사용하십시오. 이렇게하면 단일 파일에서 스타일을 변경하고 모든 문자 버튼에 영향을 줄 수 있습니다.

다음으로 버튼 자체를 <include> 파일로 추출하십시오. GUI 버전의 단추를 마우스 오른쪽 단추로 클릭하고 "추출 포함 ..."을 선택하면됩니다. 그런 다음 <include> 버튼을 준비하십시오 (예 : <TableLayout>). 각각 @+id/letter_button_0 ~ _25까지 고유 ID를 부여해야합니다. 이 모든 버튼에 대한 text 속성은 아무 것이나 나중에 동적으로 설정할 수 있습니다.

마지막으로 onCreate에서 {R.id.letter_button_0, ...} 형식의 int 배열과 { "A", ...} 형식의 문자열 배열을 정의하고 반복합니다. 그 (것)들에 단추를하기 = findbyId (int), button.setText (String) 각 단추에 편지를두기 위하여.

이런 식으로 더 많은 작업을하는 것처럼 보일 수도 있지만 똑똑한 UI를 만드는 데 많은 어려움을 겪고 있으므로 코드를 한 곳 (스타일 또는 포함)에서 변경할 수 있으며 모든 단추가 업데이트 되십시오.

0

xml 파일로 만들고 필요에 따라 보이게하고 보이지 않게해야합니다.

2

모든 것이 자산에 고정되어 있으므로 XML 파일에 모든 것을 포함 시켜도됩니다.

여전히 프로젝트의 xml layout files을 구문 분석하는 '개념'은 뷰를 만드는 프로세스에 오버 헤드를 유발한다고 주장 할 수 있습니다.

잘 설계된 레이아웃을 xml로 정의했습니다.

1

모범 사례와 이해하기 쉬운 코드를 위해 XML 레이아웃을 강력하게 권장합니다. 또한, 큰보기의 성능이 걱정되는 경우 상대 레이아웃을 사용하면 LinearLayouts와 같은 다른 유형의 레이아웃보다 렌더링 속도가 빠릅니다. 그들은 단지 자원에서 한 번에로드 할 필요 http://developer.android.com/guide/topics/ui/declaring-layout.html

는 또한 성능이 활동 멤버 변수로 버튼을 계속 증가 :

보기 XML이 가장 좋습니다. 도움이

희망, 마크

0

당신은 &이 그것을 사용하기를 사라 & 볼의 버튼 속성을 가질 수있는 동적 backgrounds.You 동적 텍스트 내용 &이 그 안에 고정 자산을 가지고있는 레이아웃을 만들 수 있습니다.

관련 문제