Android 放大缩小动画

Android 放大缩小动画,android,animation,Android,Animation,单击图像时,我正在测试放大/缩小动画。但是我没有得到我想要的结果。图像会完全放大,但不会完全缩小。要更好地了解我的问题,请参阅 这是我的密码: 放大.XML <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" > <scale xmlns:android="http://schemas.android.com/apk/res/android"

单击图像时,我正在测试放大/缩小动画。但是我没有得到我想要的结果。图像会完全放大,但不会完全缩小。要更好地了解我的问题,请参阅

这是我的密码:

放大.XML

<set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" >
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="3"
    android:toYScale="3" >
</scale>
</set>
我的dailog动画风格

<style name="DialogAnimation">
    <item name="android:windowEnterAnimation">@anim/zoom_in</item>
    <item name="android:windowExitAnimation">@anim/zoom_out</item>
    </style>

@动画/放大
@动画/缩小

按如下所示更改缩小代码并检查一次,如果不起作用,请告诉我

   <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" >

        <scale
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="

1000"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0"
        android:toYScale="0" >
    </scale>

使用此选项更改代码

zoom_in.xml


zoom_out.xml


这将为您带来好处。:)

试试这个

public class MainActivity extends Activity {
   private ImageView iv;
   private Matrix matrix = new Matrix();
   private float scale = 1f;
   private ScaleGestureDetector SGD;

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

      iv=(ImageView)findViewById(R.id.imageView);
      SGD = new ScaleGestureDetector(this,new ScaleListener());
   }

   public boolean onTouchEvent(MotionEvent ev) {
      SGD.onTouchEvent(ev);
      return true;
   }

   private class ScaleListener extends ScaleGestureDetector.

   SimpleOnScaleGestureListener {
      @Override
      public boolean onScale(ScaleGestureDetector detector) {
         scale *= detector.getScaleFactor();
         scale = Math.max(0.1f, Math.min(scale, 5.0f));

         matrix.setScale(scale, scale);
         iv.setImageMatrix(matrix);
         return true;
      }
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }

   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.

      int id = item.getItemId();

      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}

这就是你要尝试的吗?如果你试图拍摄具有缩放功能的图像的点击事件,它将不会正确地点击它,因为动画只会更改视图的UI,而不会更改当前位置,所以当你点击缩放的图像时,它不会像你所说的那样点击它,但不会从图像的中心放大再次按下按钮,放大然后关闭如果你想让你的imageview放大缩小动画,使用这个库。我会照你说的看一看。放大和缩小并不是图像的中心。如果您共享视频,它现在看起来如何?
   <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" >

        <scale
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="

1000"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0"
        android:toYScale="0" >
    </scale>
<scale
    android:duration="@android:integer/config_shortAnimTime"
    android:fromXScale="0.3"
    android:fromYScale="0.3"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1.0"
    android:toYScale="1.0" />
<scale
    android:duration="@android:integer/config_shortAnimTime"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0"
    android:toYScale="0" />
public class MainActivity extends Activity {
   private ImageView iv;
   private Matrix matrix = new Matrix();
   private float scale = 1f;
   private ScaleGestureDetector SGD;

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

      iv=(ImageView)findViewById(R.id.imageView);
      SGD = new ScaleGestureDetector(this,new ScaleListener());
   }

   public boolean onTouchEvent(MotionEvent ev) {
      SGD.onTouchEvent(ev);
      return true;
   }

   private class ScaleListener extends ScaleGestureDetector.

   SimpleOnScaleGestureListener {
      @Override
      public boolean onScale(ScaleGestureDetector detector) {
         scale *= detector.getScaleFactor();
         scale = Math.max(0.1f, Math.min(scale, 5.0f));

         matrix.setScale(scale, scale);
         iv.setImageMatrix(matrix);
         return true;
      }
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }

   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.

      int id = item.getItemId();

      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}