ImageView放大动画会切断图像

时间:2014-07-26 14:17:19

标签: android android-imageview android-animation

在我的应用中,我想动画一个图标,扩展到其大小的120%左右。问题是,当我这样做时,ImageView的内容被切断。反正有没有增长它,所以这不会发生?

enter image description here

调用动画:

Animation sgAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.highlight);
charm.startAnimation(sgAnimation);

动画本身:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:fillBefore="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true" >

<scale
    android:duration="100"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="1.5"
    android:toYScale="1.5" />
</set>

与imageview相关的布局部分:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/over_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >        
<RelativeLayout
    android:id="@+id/charms_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="15dp"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp" >

    <ImageView
        android:id="@+id/charm_phone"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:alpha=".75"
        android:contentDescription="@string/account_image_description"
        android:src="@drawable/ic_phone_white_24dp" />

    <ImageView
        android:id="@+id/charm_lock"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:contentDescription="@string/account_image_description"
        android:src="@drawable/ic_qs_lock_screen_off" />

    <ImageView
        android:id="@+id/charm_camera"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:alpha=".75"
        android:contentDescription="@string/account_image_description"
        android:src="@drawable/ic_camera_white_24dp" />

    

注意:我已经尝试用wrap_content替换24dp,但是没有用

3 个答案:

答案 0 :(得分:13)

我会尝试使用

android:clipChildren="false"
android:clipToPadding="false" 

在imageView容器和imageview中

答案 1 :(得分:1)

所以我最终在imageview中添加了填充,并通过额外的填充增加了imageview的大小。这样,当它被动画化时,它会动画到填充空间并且不会被裁剪。

答案 2 :(得分:0)

您可以通过根据缩放动画提供ImageView的父布局高度来实现预期结果。

在您的情况下,您尝试为宽度和高度为24dp的ImageView设置动画。因此,ImageView需要一个36dp的空间才能正常动画。由于您将布局宽度设置为match_parent,因此您的图像不会从左侧和右侧切割,但高度的换行内容将无效。

考虑一张图片:

<RelativeLayout
    android:id="@+id/relative_layout"
    android:layout_width="match_parent"
    android:layout_height="36dp">

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_margin="6dp"
        android:layout_alignParentLeft="true"
        android:src="@drawable/src_image"/>

<RelativeLayout/>