2012-11-02 2 views
3

"로그인"버튼이 있습니다. 사용자가 조회하면 사용자 로그인 정보가 포함 된 경고 대화 상자가 나타납니다. 사용자가 정보를 입력하고 OK를 누르면 버튼이 "Welcome, [User Name]"을 포함하는 데 필요한 너비만큼 늘어납니다. 내가하려는 일은 버튼의 너비 변화를 "로그인"에서 "환영, [사용자 이름]"으로 움직이는 것입니다.Android ScaleAnimation이 9 패치가 작동하지 않는 코드입니다.

나는 xml 파일에 다른 너비를 지정하면 완벽하게 작동하는 9 개의 패치로 버튼 배경을 만들었습니다. 기본 너비에서 더 긴 너비로 너비를 변경하려고하면 일반 .png와 같이 늘어납니다. 9.png가 아닙니다. 여기

내가 하나의 정적 폭에서 다른 스트레칭 사용하고 코드입니다 : 나는 한 사람의 이름이 얼마나 많은 편지 알 수 없기 때문에

<Button 
    android:id="@+id/signIn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:background="@drawable/button_nine_patch" 
    android:textSize="20dip" 
    android:layout_marginBottom="-2dip" /> 

그리고

ScaleAnimation stretch = new ScaleAnimation(1.0f ,10.0f, 1.0f, 1.0f); 

this.signIn = (Button) this.findViewById(R.id.signIn); 
this.signIn.setOnClickListener(this); 

stretch.setDuration(2000); 
signIn.startAnimation(stretch); 

I 코드에서 버튼의 최종 너비를 설정할 수 있어야합니다.

저는 미친 듯이 봤 거든 모든 안드로이드 문서를 통해 갔는데, 난 그냥이 문제에 대한 답변을 찾을 수 없습니다.

도움이 될 것입니다.

+0

저도 같은 문제가 발생하고 있습니다. 애니메이션 전후에 9 패치를 교환하려고합니다. 이 경우 귀하의 경우에는 작동하지 않을 수도 있지만 시도해 보셨습니까? – prodaea

답변

1

Android가보기에서 애니메이션 프로세스를 거치면 실제보기가 아닌 Bitmap 비트 맵표현이 활성화됩니다. 뷰를 애니메이션화하려면 뷰를 둘러싼 구성 요소를 처리해야하며 상당히 많은 비용이 듭니다. 이것은 일반적으로 유리하지만, 상황에 따라 9patch가 이전 비트 맵으로 바뀌므로 원하는 결과를 얻지 못합니다.

나는 단지 뷰의 특정 영역을 변환 할 수있는 방법을 알고, 그리고 여기에 그 전용의 질문이 없습니다 : Stretch/Scale a Specific Region of View/Bitmap

관련 문제