2011-10-21 64 views
3

我還沒有找到任何有關如何在應用ScaleAnimation後縮放視圖的觸摸區域的解決方案,該動畫確實改變了該視圖的比例,但不是該視圖的觸摸區域。觸摸區域保持不變。下面是我的示例代碼:如何在Android中應用ScaleAnimation後縮放視圖的點擊/觸摸區域?

package com.xyz; 

public class XyzActivity extends Activity { 
int zoomLevel = 1; 
int zoomNext = 2; 
Button btn = null; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    btn = (Button)findViewById(R.id.button1); 
    btn.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      AnimationSet set = new AnimationSet(false); 
      ScaleAnimation anim = new ScaleAnimation(zoomLevel, zoomNext, zoomLevel, zoomNext); 
      set.addAnimation(anim); 
      set.setDuration(0); 
      set.setFillEnabled(true); 
      set.setFillAfter(true); 
      v.startAnimation(set); 
      zoomLevel += zoomNext; 
      zoomNext = zoomLevel - zoomNext; 
      zoomLevel-=zoomNext; 
     } 
    }); 
    } 

    } 

和Tha XML是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
    <Button android:text="Button" android:id="@+id/button1" 
    android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
</RelativeLayout> 

什麼我請建議我....

+0

所以你找到了答案,並保持它自己?你應該選擇正確的答案,或在你找到答案後告訴我們;) –

+0

@silviust同意,即時通訊有此問題 – Bish25

回答

1

的動畫只有四處移動的像素。您可以添加一個偵聽器來檢查動畫的結尾,並實際移動widdget /按鈕或子控件/按鈕(或者它在migth內部的佈局可以更容易地在動畫上進行渲染)並更改觸摸檢查(ontouch)。

或者在動畫結束時,您可以隱藏原始視圖並顯示「新」視圖。這在佈局xml中也更容易理解(您可以將它們設置爲隱藏在那裏)。取決於動畫細節。

+0

謝謝Pulsar的評論,我定義試試這個,讓你知道很快 – Shailendra

+0

它進展順利嗎? –

+1

面對類似的問題,並想知道你設法提出什麼解決方案。 – slott

相關問題