在android中应用ScaleAnimation后如何缩放视图的点击/触摸区域?

Sha*_*dra 5 java 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;
        }
    });
   }

  }
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我做什么请建议我......

Mat*_*der 1

动画仅移动像素。您可以添加一个侦听器来检查动画的结束,并实际移动小部件/按钮或对小部件/按钮进行子类化(或者其内部的布局可能更容易取决于动画)并更改触摸检查(ontouch)。

或者在动画结束时,您可以隐藏原始视图并显示“新”视图。这在布局 xml 中也更容易理解(您可以将它们设置为隐藏)。取决于动画细节。