2013-02-05 2 views
0

내 활동에 단추가 있고 TranslateAnimation을 사용하여 위치를 변경하고 있습니다.

나는 anim.setFillAfter (true)를 사용하고 있습니다. 결과 번역을 유지하려면 단추가 위치를 이동하지만 터치 영역은 동일하게 유지됩니다.
MainActivity.java
번역 된 단추가 올바른 결과를 제공하지 않습니다.

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Animation anim=new TranslateAnimation(0, 100, 0, 0); 
     anim.setDuration(500); 
     anim.setFillAfter(true); 
     Button mybtn = (Button)findViewById(R.id.btn); 
     mybtn.startAnimation(anim); 
    } 

    public void myFunc(View v){ 
     Toast.makeText(this, "btn clicked", Toast.LENGTH_SHORT).show(); 
    } 
} 
에게 :
지금은이 버튼의 이전 위치에 접촉 오히려 작동하지 않는 버튼을 터치하면 다음

내 코드입니다 .. 그 리스너를 호출

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      tools:context=".MainActivity" > 

      <Button 
       android:id="@+id/btn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:layout_centerVertical="true" 
       android:text="@string/hello_world" 
       android:onClick="myFunc"/> 

     </RelativeLayout> 
+0

애니메이션을 제거하고 시도해 볼 수 있습니까? – lokoko

+0

achually 나는 버튼을 다른 위치에 애니메이션으로 적용하고 거기에서 click 속성을 수행하기를 원합니다. –

답변

0

나는 당신의 케이스를 다시 생성하고는 엉덩이의 50 % 만 보인다 on은 선택된 색상을 표시합니다. 그게 맞습니까? 이 시도 :

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button sampleButton = (Button)findViewById(R.id.btn); 
    sampleButton.animate().translationX(somevalue).setDuration(someduration); 
} 
+0

mybtn.getWidth()는 위의 코드에서 0을 반환하고 단추의 너비를 반환하는 경우에는 왼쪽에있는 왼쪽 버튼을 클릭해도 작동한다고 생각합니다. –

+0

버튼의 폭이 할 얻을 :.) ( mybtn.getViewTreeObserver을 addOnGlobalLayoutListener을 (새 OnGlobalLayoutListener() { 공공 무효 onGlobalLayout() { ANIM = 새로운 TranslateAnimation (0, mybtn.getWidth(), 0, 0) ; } } – lokoko

+0

http://stackoverflow.com/questions/5886624/animation-setfillafter-before-do-the-work-what-are-the-for-이 질문에 대한 대답에 따르면 setFillAfter는 애니메이션에만 적용됩니다. 속성,보기 속성이 아닙니다. 어떻게 애니메이션 속성과 같은보기 속성을 변경할 수 있습니까? 내 질문은 ... –

1

을 내가 vogellahere 안드로이드는 설명했다이 페이지에 내 질문에 대한 답을 발견, 버튼을보기 애니메이션뿐만 아니라 속성 애니메이션이 필요합니다 여기

코드입니다 내가 사용 : 다른 사람이 도움이 필요한 경우 도움을

Button mybtn = (Button)findViewById(R.id.btn); 
mybtn.animate().translationX(400).setDuration(500); 

고맙습니다 ... 내가이 게시물을 떠납니다.

관련 문제